如何定制对话框系统菜单(读记)
原文链接: http://www.vckbase.com/document/viewdoc/?id=657
设置了 EX_WM_TOOLWINDOW 扩展式样,因此在标题栏左上角看不到系统菜单图标。
OnInitDialog()中
// 解决 Windows 95 中的 bug
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
// 解决 Windows 95 中的 bug
ASSERT((IDM_EXIT & 0xFFF0) == IDM_EXIT);
没用过95,不晓得啥BUG。
专业用语:control menu指的是系统菜单,如下:
CWnd::GetSystemMenu
CMenu* GetSystemMenu( BOOL bRevert ) const;
bRevert为FALSE,返回当前使用的系统菜单的一份COPY的指针。为TRUE,则会将系统菜单改为默认状态,并返回一个先前未被定义的值。GetSystemMenu返回的值提供给CMenu::AppendMenu, CMenu::InsertMenu, or CMenu::ModifyMenu三个函数使用。
添加菜单项函数,Append暂译为添加。
关于BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );
关键在于nFlags,MF_STRING, MF_SEPARATOR二者分别表示添加菜单项,分隔符,另有MF_POPUP等。
所有预定义的控制菜单项(也就是系统菜单)的ID号必须大于 0xF000。如果某个应用程序要添加系统菜单,
其系统菜单的 ID 号必须小于F000。
通常系统菜单通过 WM_SYSCOMMAND 消息处理。
总共学习了三个函数,增加 AppendMenu, 修改 ModifyMenu, 删除 RemoveMenu.