vc 如何给系统菜单添加一个菜单项

vc 如何给系统菜单添加一个菜单项,第1张

下例给系统菜单添加两个新的 int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct) { … //Make sure system menu item is in the right range. ASSERT (IDM_MYSYSITEM &0xFFF0)==IDM_MYSYSITEM) ASSERT (IDM-MYSYSITEMAppendmenu (MF_SEPARATOR) pSysMenu->AppendMenu (MF_STRING, IDM_MYSYSITEM, strMenuitem) … } 现在,选择系统菜单项时用户应进行检测。使用ClassWizard 处理WM_SYSCOMMAND 消息并检测用户菜单的nID 参数: void CMainFrame:: OnSysCommand (UINT nID,LPARAM lParam) { //Determine if our system menu item was selected. if ( (nID &0xFFF0)==IDM_MYSYSITEM) { //TODO-process system menu item } else CMDIFrameWnd ::OnSysCommand (nID, lParam) } 最后,一个设计良好的UI 应用程序应当在系统菜单项加亮时在状态条显示一个帮助信息,这可以通过增加一个包含系统菜单基ID 的串表的入口来实现。

1、关闭系统菜单:多种方式,修改对话框模板,SetWindowLong,修改CREATESTRUCT结构等,举例:在OnInitDialog()中添加:

SetWindowLong(this->m_hWnd,

GWL_STYLE,

GetWindowLong(this->m_hWnd,GWL_STYLE)

&

~WS_SYSMENU

)

2、屏蔽消息,如Alt+F4关闭等:在OnSysCommand中的

else

{

CDialog::OnSysCommand(nID,

lParam)

}

前面加上SC_CLOSE判断:

else

if(

nID

==

SC_CLOSE

)

{

//按下Alt+F4时,你的 *** 作,如显示一个提示消息,或什么也不做

}

else

{

CDialog::OnSysCommand(nID,

lParam)

}

3、如果你还想屏蔽ESC退出,那就重载,OnCancel(),并将其中的CDialog::OnCancel()注释掉。

4、还有一个OnOK()重载,如果同样处理,就只有通过任务管理器结束程序了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11355519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存