关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)相关的知识,希望对你有一定的参考价值。

对于模态非模态对话框默认是不响应菜单的UPDATE_COMMAND_UI消息的,需要增加对WM_INITMENUPOPUP消息的处理以后,才可以响应UPDATE_COMMAND_UI。

 

[cpp] view plain copy
 
  1. void CXXXDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)  
  2. {  
  3.  CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);  
  4.   
  5. // TODO: Add your message handler code here  
  6.   
  7.  if(!bSysMenu && pPopupMenu)  
  8.  {  
  9.   CCmdUI cmdUI;  
  10.   cmdUI.m_pOther = NULL;  
  11.   cmdUI.m_pMenu = pPopupMenu;  
  12.   cmdUI.m_pSubMenu = NULL;  
  13.   
  14.   UINT count = pPopupMenu->GetMenuItemCount();  
  15.   cmdUI.m_nIndexMax = count;  
  16.   for(UINT i=0; i<count; i++)  
  17.   {  
  18.    UINT nID = pPopupMenu->GetMenuItemID(i);  
  19.    if(-1 == nID || 0 == nID)  
  20.    {  
  21.     continue;  
  22.    }  
  23.    cmdUI.m_nID = nID;  
  24.    cmdUI.m_nIndex = i;  
  25.    cmdUI.DoUpdate(this, FALSE);  
  26.   }  
  27.  }   
  28. }   
 
http://blog.csdn.net/visualeleven/article/details/5513648

 

 

以上是关于关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)的主要内容,如果未能解决你的问题,请参考以下文章

MFC编程 | 非模态对话框的定义

关于创建模态窗口和非模态窗口的研究

009 库存管理系统界继续

MFC_对话框

Qt 之 模态非模态半模态窗口的介绍及 实现QDialog的exec()方法

mfc非模态对话框