Menu

The Menu structure contains functions and structures to create and operate on menus.

structure Menu:

  sig

    type HMENU and HBITMAP and HWND and HINSTANCE

    type RECT =  { left: int, top: int, right: int, bottom: int }

	

    datatype MenuFlag =

        MF_BYCOMMAND | MF_BYPOSITION | MF_SEPARATOR | MF_ENABLED | MF_GRAYED |

        MF_DISABLED | MF_UNCHECKED | MF_CHECKED | MF_USECHECKBITMAPS | MF_STRING |

        MF_BITMAP | MF_OWNERDRAW | MF_POPUP | MF_MENUBARBREAK | MF_MENUBREAK |

        MF_UNHILITE | MF_HILITE | MF_DEFAULT | MF_SYSMENU | MF_HELP |

        MF_RIGHTJUSTIFY | MF_MOUSESELECT



    datatype MenuIdOrHandle = MenuHandle of HMENU | MenuId of int



    datatype MenuItemOptions =

          MFT_MENUBARBREAK

        | MFT_MENUBREAK

        | MFT_RADIOCHECK

        | MFT_RIGHTJUSTIFY

        | MFT_RIGHTORDER



    datatype MenuItemType =

          MFT_BITMAP of HBITMAP

        | MFT_OWNERDRAW of int

        | MFT_SEPARATOR

        | MFT_STRING of string



    datatype MenuState =

          MFS_CHECKED

        | MFS_DEFAULT

        | MFS_DISABLED

        | MFS_ENABLED

        | MFS_GRAYED

        | MFS_HILITE

        | MFS_UNCHECKED

        | MFS_UNHILITE



    type MenuItemInfo =

        {

            menuType: MenuItemType,

            menuOptions: MenuItemOptions list,

            state: MenuState list,

            wID: int,

            hSubMenu: HMENU option,

            hbmpChecked: HBITMAP option,

            hbmpUnchecked: HBITMAP option,

            itemData: int

        }



    val AppendMenu : HMENU * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit

    val CheckMenuRadioItem : HMENU * int * int * int * MenuFlag -> unit

    val CreateMenu : unit -> HMENU

    val CreatePopupMenu : unit -> HMENU

    val DeleteMenu : HMENU * int * MenuFlag -> unit

    val DestroyMenu : HMENU -> unit

    val DrawMenuBar : HWND -> unit

    val EnableMenuItem : HMENU * int * MenuFlag -> MenuFlag list

    val GetMenu : HWND -> HMENU



    datatype GMDIFlags = GMDI_GOINTOPOPUPS | GMDI_USEDISABLED

    val GetMenuDefaultItem : HMENU * bool * GMDIFlags list -> int



    val GetMenuItemCount : HMENU -> int

    val GetMenuItemID : HMENU -> int

    val GetMenuItemInfo : HMENU * int * bool -> MenuItemInfo

    val GetMenuItemRect : HWND * HMENU * int -> RECT

    val GetMenuState : HMENU * int * MenuFlag -> MenuFlag list * int

    val GetMenuString : HMENU * int * MenuFlag -> string

    val GetSubMenu : HMENU * int -> HMENU

    val GetSystemMenu : HWND * bool -> HMENU

    val HiliteMenuItem : HWND * HMENU * int * MenuFlag list -> unit

    val InsertMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit

    val IsMenu : HMENU -> bool

    val LoadMenu : HINSTANCE * Resource.RESID -> HMENU

    val ModifyMenu : HMENU * int * MenuFlag list * MenuIdOrHandle * MenuItemType -> unit

    val RemoveMenu : HMENU * int * MenuFlag -> unit

    val SetMenu : HWND * HMENU option -> unit

    val SetMenuItemInfo : HMENU * int * bool * MenuItemInfo -> unit

    val InsertMenuItem : HMENU * int * bool * MenuItemInfo -> unit



    datatype TrackPopupMenuOptions =

        TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_LEFTALIGN | TPM_CENTERALIGN | TPM_RIGHTALIGN |

        TPM_TOPALIGN | TPM_VCENTERALIGN | TPM_BOTTOMALIGN | (*TPM_HORIZONTAL | TPM_VERTICAL |*)

        TPM_NONOTIFY | TPM_RETURNCMD

    val TrackPopupMenu : HMENU * TrackPopupMenuOptions list * int * int * HWND -> int



    val SetMenuContextHelpId: HMENU * int -> unit

    val GetMenuContextHelpId: HMENU -> int

  end