菜单API

BOOL  AppendMenu(hMenu hMenu,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem)
在指定的菜单里添加一个菜单项

DWORD CheckMenuItem(HMENU hmenu, UINT uIDCheckItem, UINT uCheck)
复选或撤消复选指定的菜单条目

BOOL  CheckMenuRadioItem(HMEN hMENU,UINT idFirst,UINT idLast,UINT idCheck,UINT uFlags)
指定一个菜单条目被复选成“单选”项目

HMENU CreateMenu(VOID)
创建新菜单
 
HMENU CreatePopupMenu(VOID)
创建一个空的弹出式菜单

Long  DeleteMenu(Long hMenu,Long nPosition, Long wFlags)
删除指定的菜单条目

BOOL DestroyMenu(HMENU hMenu)
删除指定的菜单

BOOL DrawMenuBar(HWND hWnd)
为指定的窗口重画菜单

BOOL EnableMenuItem(HMENU hMenu,UINT uIDEnableItem, UINT uEnable)

允许或禁止指定的菜单条目

HMENU GetMenu(HWND hWnd)
取得窗口中一个菜单的句柄

Long GetMenuCheckMarkDimensions()
返回一个菜单复选符的大小

Long GetMenuContextHelpId(Long hMenu)
取得一个菜单的帮助场景ID

Long GetMenuDefaultItem(Long hMenu,Long fByPos,Long gmdiFlags )
判断菜单中的哪个条目是默认条目

Long  GetMenuItemCount(Long hMenu)
返回菜单中条目(菜单项)的数量

Long GetMenuItemID" (Long hMenu,Long nPos)
返回位于菜单中指定位置处的条目的菜单ID

Long GetMenuItemInfo(Long hMenu,Long un,Boolean b,MENUITEMINFO lpMenuItemInfo)
取得(接收)和一个菜单条目有关的特定信息

Long GetMenuItemRect(Long hWnd,Long hMenu,Long uItem,RECT lprcItem)
在一个矩形中装载指定菜单条目的屏幕坐标信息

UINT GetMenuState(HMENU hMenu,UINT uld,UINT uFlags)
取得和指定菜单条目状态有关的信息

int GetMenuString(HMENU hMenu,UINT uIDItem,LPTSTR lpString,int nMaxCount,UINT uFlag)
取得指定菜单条目的字串

HMENU GetSubMenu(HMENU hMenu,int nPos)
取得一个弹出式菜单的句柄,他位于菜单中指定的位置

HMENU GetSystemMenu(HWND hWnd,BOOL bRevert)
取得指定窗口的系统菜单的句柄

Long HiliteMenuItem(Long hwnd,Long hMenu,Long wIDHiliteItem,Long wHilite)
控制顶级菜单条目的加亮显示状态

BOOL InsertMenu(HMENU hMenu,UINt uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem)
在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动

Long InsertMenuItem(Long hMenu,Long un,bool Boolean,MENUITEMINFO lpcMenuItemInfo)
插入一个新菜单条目

BOOL lsMenu(HMENU hMenu)
判断指定的句柄是否为一个菜单的句柄

HMENU LoadMenu(HINSTANCE hlnstance,LPCTSTR lpMenuName)
从指定的模块或应用程式实例中载入一个菜单

BOOL LoadMenuIndirect(const void* lpMenuTemplate )
载入一个菜单

Long MenuItemFromPoint(Long hWnd, Long hMenu, POINTAPI ptScreen)
判断哪个菜单条目包含了屏幕上一个指定的点

BOOL ModifyMenu(HMENU hMnu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR IpNewltem)
改变菜单条目

BOOL RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlgs)
删除指定的菜单条目

BOOL SetMenu(HWND hWnd,HMENU hMenu)
配置窗口菜单

Long SetMenuContextHelpId(Long hMenu,Long dw)
配置一个菜单的帮助场景ID

Long SetMenuDefaultItem(Long hMenu,Long uItem,Long fByPos)
将一个菜单条目设为默认条目

Long SetMenuItemBitmaps(Long hMenu,Long nPosition,Long wFlags,Long hBitmapUnchecked,Long hBitmapChecked)
配置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√)

BOOL SetMenuItemInfo(HMENU hMenu, UINT uItem, BOOL fByPosition, LPMENUITEMINFO lpmii)
为一个菜单条目配置指定的信息

BOOL TrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,HWND hWnd,CONST RECT* prcRect)
在屏幕的任意地方显示一个弹出式菜单

BOOL TrackPopupMenuEx(HMENU hMenu,UINT uFlags,int x,int y,HWND hWnd,LPTPMPARAMS lptpm)
和TrackPopupMenu相似,只是他提供了额外的功能

 

MENUITEMINFO结构

typedef struct tagMENUITEMINFO {
    UINT    cbSize;
    UINT    fMask;
    UINT    fType;
    UINT    fState;
    UINT    wID;
    HMENU   hSubMenu;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    DWORD   dwItemData;
    LPTSTR  dwTypeData;
    UINT    cch;
} MENUITEMINFO, FAR *LPMENUITEMINFO;

 

成员
cbSize            结构的大小,字节
fMask             重新获取或设置成员,这个成员可以使用一个或多个这些值

                                  MIIM_CHECKMARKS                          重新获取或设置hbmpChecked和hbmpUnchecked成员

                                  MIIM_DATA                                            重新获取或设置dwItemData成员 

                                  MIIM_ID                                                  重新获取或设置wID成员

                                  MIIM_STATE                                          重新获取或设置fState成员

                                  MIIM_SUBMENU                                  重新获取或设置hSubMenu成员

                                  MIIM_TYPE                                            重新获取或设置fType和dwTypeData成员

fType              菜单项类型.这个成员可以使用一个或多个这些值
                                  MFT_BITMAP  使用一个位图显示菜单项.dwTypeData低次序的字是成员的位图句柄.cch是忽视的.

                                  MFT_MENUBARBREAK         菜单项位置在新行上(适用于菜单栏)或在新列内(适用于下拉菜单,子菜单,快捷菜单).

                                                                                     适用于下拉菜单,子菜单,或快捷菜单,垂直线以前的列中隔离新的列

                                  MFT_MENUBREAK                菜单项位置在新行上(适用于菜单栏)或在新列内(适用于下拉菜单,子菜单,快

                                                                                     捷菜单).适用于下拉菜单,子菜单,或快捷菜单,这个列不被垂直线分开  

                                  MFT_OWNERDRAW              分配责任到那个窗体菜单绘制自己的菜单项.在菜单显示之前第一时间窗体收到 一条

                                                                                     WM_MEASUREITEM消息,和一条无论何时菜单项的外观都必须更新的WM_DRAWITEM消息

                                   MFT_RADIOCHECK              如果hbmpChecked成员是NULL 显示选中的菜单项使用一个单选按钮来代替一个复选标记

                                   MFT_RIGHTJUSTIFY            权利证明菜单项和所有后来的项,如果菜单项在菜单栏内这个值才是唯一有效的

                                   MFT_RIGHTORDER               Windows 95, Windows NT 5.0,和随后的:指定那个层叠菜单右至左(默认的是左至右).这是支持

                                                                                     习惯右至左的语言,这样的人是阿拉伯的和希伯来人

                                   MFT_SEPARATOR                 指定那个菜单项是一个隔离物(线条).一个菜单隔离物看起来是水平分划的线条.

                                                                                    dwTypeDate和cch成员忽视. 这个值在一个下拉菜单,子菜单,或快捷菜单才是唯一有效的

                                   MFT_STRING                        显示使用菜单项的一个文本字符串.dwTypeData成员指示一个空终止的字符串,和cch成员是字符串的长度

                                   MFT_BITMAP, MFT_SEPARATOR, and MFT_STRING             任何一个值都不能相互组合使用

fState              菜单项的状态.这个成员可以是一个或多个的这些值:
                                 MFS_CHECKED                     复选的菜单项.至于更多关于菜单项选中的信息,看hbmpChecked成员.
                                 MFS_DEFAULT                       指定那个是默认的菜单项。一个菜单仅仅只可以包含一个默认的菜单项,粗体显示那个。
                                 MFS_DISABLED                      禁止菜单项所以它不能被选择.但是不使它变灰.
                                 MFS_ENABLED                      激活菜单项所以它可以被选择。这是默认的状态.

                                 MFS_GRAYED                         禁止菜单项和变灰它,所以它不可以被选择.
                                 MFS_HILITE                             加亮菜单项
                                 MFS_UNCHECKED                取消复选菜单项.至于更多关于菜单项unchecked信息,看hbmpUnchecked成员变量

                                 MFS_UNHILITE                        移除来自菜单项的加亮区.这是默认状态.

wID                            应用程序定义16位的值来识别那个菜单项.
hSubMenu              下拉菜单或相关联的子菜单的菜单项的句柄。如果菜单项不是一个打开的下拉菜单或子菜单,

                                    那这个成员是NULL

hbmpChecked        如果条目被选中,这个显示项是位图的句柄.如果这个成员是NULL,使用一个默认的位图.如查

                                                 MFT_RADIOCHECK类型值是被指定的.这个默认的图片是子弹一样的图片。否则它是复选标记

                                                 hbmpUnchecked 如果条目没有被选中,这个显示项是位图的句柄,如果成员是NULL,不能使用位图

 dwItemData            应用程序定义的菜单项相关联的值

dwTypeData           菜单项的内容.如果fMask成员设置了MIIM_TYPE标记这个成员才能被使用;
 
                                               在调用GetMenuItemInfo之前.应用程序必须为这个成员设置一个指定的缓冲区.长度是cch成员指

                                               定.如果取回的菜单项的类型是MFT_STRING,那么GetMenuItemInfo 拷贝菜单项的文本到缓冲区.如果取回

                                               的菜单项是其它类型,那么GetMenuItemInfo设置dwTypeDate一个值,是fType成员指定的

                                               在使用SetMenuItemInfo函数的时候,谁包含这个成员类型的一个值,是fType成员指定.

cch                            菜单项文本的长度息,就在一个菜单项的类型是MFT_STRING信息时.如果fMask成员设置

                                               MIIM_TYPE标记和没有其它方面的这个成员是唯一可以使用的.在调用SetMenuItemInfo设置菜单项的内容

                                               时这个成员忽略.在调用GetMenuItemInfo前,应用程序必须为dwTypeDate成员设置一个指定长度的缓冲区.如果取回的菜单

                                              项类型是MFT_STRING(fType成员被指定),那么GetMenuItemInfo设置cch为取回字符串的长度.如果取回的菜单项

                                               是其它类型,GetMenuItemInfo把cch设置为0

 

说明  :    MENUITEMINFO 结构体可以被GetMenuItemInfo, InsertMenuItem, and SetMenuItemInfo 函数使用

 

 

 

阅读更多
个人分类: Windows API
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭