1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3
4<head>
5<title>Windows Interface Reference: Menu structure</title>
6</head>
7
8<body>
9
10<h1>Menu </h1>
11
12<p>The Menu structure contains functions and structures to create and operate on menus.</p>
13
14<pre>structure Menu:
15  sig
16    type HMENU and HBITMAP and HWND and HINSTANCE
17    type RECT =  { left: int, top: int, right: int, bottom: int }
18	
19    datatype MenuFlag =
20        MF_BYCOMMAND | MF_BYPOSITION | MF_SEPARATOR | MF_ENABLED | MF_GRAYED |
21        MF_DISABLED | MF_UNCHECKED | MF_CHECKED | MF_USECHECKBITMAPS | MF_STRING |
22        MF_BITMAP | MF_OWNERDRAW | MF_POPUP | MF_MENUBARBREAK | MF_MENUBREAK |
23        MF_UNHILITE | MF_HILITE | MF_DEFAULT | MF_SYSMENU | MF_HELP |
24        MF_RIGHTJUSTIFY | MF_MOUSESELECT
25
26    datatype MenuIdOrHandle = MenuHandle of HMENU | MenuId of int
27
28    datatype MenuItemOptions =
29          MFT_MENUBARBREAK
30        | MFT_MENUBREAK
31        | MFT_RADIOCHECK
32        | MFT_RIGHTJUSTIFY
33        | MFT_RIGHTORDER
34
35    datatype MenuItemType =
36          MFT_BITMAP of HBITMAP
37        | MFT_OWNERDRAW of int
38        | MFT_SEPARATOR
39        | MFT_STRING of string
40
41    datatype MenuState =
42          MFS_CHECKED
43        | MFS_DEFAULT
44        | MFS_DISABLED
45        | MFS_ENABLED
46        | MFS_GRAYED
47        | MFS_HILITE
48        | MFS_UNCHECKED
49        | MFS_UNHILITE
50
51    type MenuItemInfo =
52        {
53            menuType: MenuItemType,
54            menuOptions: MenuItemOptions list,
55            state: MenuState list,
56            wID: int,
57            hSubMenu: HMENU option,
58            hbmpChecked: HBITMAP option,
59            hbmpUnchecked: HBITMAP option,
60            itemData: int
61        }
62
63    val <a
64name="AppendMenu">AppendMenu</a> : HMENU * MenuFlag list * MenuIdOrHandle * MenuItemType -&gt; unit
65    val CheckMenuRadioItem : HMENU * int * int * int * MenuFlag -&gt; unit
66    val <a
67name="CreateMenu">CreateMenu</a> : unit -&gt; HMENU
68    val CreatePopupMenu : unit -&gt; HMENU
69    val DeleteMenu : HMENU * int * MenuFlag -&gt; unit
70    val DestroyMenu : HMENU -&gt; unit
71    val DrawMenuBar : HWND -&gt; unit
72    val EnableMenuItem : HMENU * int * MenuFlag -&gt; MenuFlag list
73    val GetMenu : HWND -&gt; HMENU
74
75    datatype GMDIFlags = GMDI_GOINTOPOPUPS | GMDI_USEDISABLED
76    val GetMenuDefaultItem : HMENU * bool * GMDIFlags list -&gt; int
77
78    val GetMenuItemCount : HMENU -&gt; int
79    val GetMenuItemID : HMENU -&gt; int
80    val GetMenuItemInfo : HMENU * int * bool -&gt; MenuItemInfo
81    val GetMenuItemRect : HWND * HMENU * int -&gt; RECT
82    val GetMenuState : HMENU * int * MenuFlag -&gt; MenuFlag list * int
83    val GetMenuString : HMENU * int * MenuFlag -&gt; string
84    val GetSubMenu : HMENU * int -&gt; HMENU
85    val GetSystemMenu : HWND * bool -&gt; HMENU
86    val HiliteMenuItem : HWND * HMENU * int * MenuFlag list -&gt; unit
87    val InsertMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -&gt; unit
88    val IsMenu : HMENU -&gt; bool
89    val LoadMenu : HINSTANCE * Resource.RESID -&gt; HMENU
90    val ModifyMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -&gt; unit
91    val RemoveMenu : HMENU * int * MenuFlag -&gt; unit
92    val SetMenu : HWND * HMENU option -&gt; unit
93    val SetMenuItemInfo : HMENU * int * bool * MenuItemInfo -&gt; unit
94    val InsertMenuItem : HMENU * int * bool * MenuItemInfo -&gt; unit
95
96    datatype TrackPopupMenuOptions =
97        TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_LEFTALIGN | TPM_CENTERALIGN | TPM_RIGHTALIGN |
98        TPM_TOPALIGN | TPM_VCENTERALIGN | TPM_BOTTOMALIGN | (*TPM_HORIZONTAL | TPM_VERTICAL |*)
99        TPM_NONOTIFY | TPM_RETURNCMD
100    val TrackPopupMenu : HMENU * TrackPopupMenuOptions list * int * int * HWND -&gt; int
101
102    val SetMenuContextHelpId: HMENU * int -&gt; unit
103    val GetMenuContextHelpId: HMENU -&gt; int
104  end</pre>
105</body>
106</html>
107