Windows程序的菜单,分为三大类:系统菜单、弹出式菜单(右键菜单)、顶层菜单(下拉式菜单)。
系统菜单:
在windows程序左上角的图标点击鼠标左键、或者在标题栏点击鼠标右键,出现的就是系统菜单。主要内容有:还原、移动、大小、最小化、最大化、关闭。
1、获取系统菜单:
HMENU WINAPI GetSystemMenu( _In_ HWND hWnd, _In_ BOOL bRevert);
参数:bRevert,TRUE–恢复到默认的系统菜单(将删除所有自己定义的系统菜单项),FALSE–获取当前的系统菜单。
2、添加系统菜单:
BOOL WINAPI AppendMenuW( HMENU hMenu, UINT uFlags, UINT_PTR uIDNewItem, LPCWSTR lpNewItem);
参数:uFlags,标志,常用的MF_STRING(字符串),MF_SEPARATOR(分割线)
uIDNewItem,菜单ID,lpNewItem,菜单名字。
3、删除系统菜单:
BOOL WINAPI DeleteMenu( HMENU hMenu, UINT uPosition, UINT uFlags);
参数:uPosition,菜单ID或者菜单position Index,uFlags,删除标志: MF_BYPOSITION —通过索引删除,MF_BYCOMMAND–通过菜单id方式删除
4、获取菜单总数
Int WINAPI GetMenuItemCount(HMENU hMenu); 注意,分隔符也会作为菜单项的
5、获取position Index位置的菜单项ID
UINT WINAPI GetMenuItemID( HMENU hMenu, int nPos);
一般情况下,分隔符菜单的ID设置为0。
6、系统菜单的消息处理WM_SYSCOMMAND
系统菜单点击以后产生的消息是WM_SYSCOMMAND,wParam中存放的是菜单ID。