发信人: tsingxiao() 
整理人: girlrong(1999-11-13 15:04:09), 站内信件
 | 
 
 
    为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态
 
     需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TR UE(缺
 省
 值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项 。
 
     file://Disable MFC from automatically disabling menu items.
 
     m_bAuoMenuEnable=FALSE;
 
     file://Now enable the menu item.
 
     CMenu* pMenu=GetMenu ();
 
     ASSERT_VALID (pMenu);
 
     pMenu->EnableMenuItem (ID_MENU_ITEM,MF_BYCOMMAND | MF_ENABLED);
 
     如何给系统菜单添加一个菜单项
 
     给系统菜单添加一个菜单项需要进行下述三个步骤:
 
     首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols. ..
 
     可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000;
 
     其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Append menu将
 菜
 单项添加到菜单中。下例给系统菜单添加两个新的菜单项:
 
     int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
     {
     …
     file://Make sure system menu item is in the right range.
     ASSERT (IDM_MYSYSITEM &0xFFF0)==IDM_MYSYSITEM);
     ASSERT (IDM-MYSYSITEM<0xF000);
     file://Get pointer to system menu.
     CMenu* pSysmenu=GetSystemmenu (FALSE);
     ASSERT_VALID (pSysMenu);
     file://Add a separator and our menu item to system menu.
     CString StrMenuItem (_T ("New menu item"));
     pSysMenu->Appendmenu (MF_SEPARATOR);
     pSysMenu->AppendMenu (MF_STRING, IDM_MYSYSITEM, strMenuitem);
     …
     }
 
     现在,选择系统菜单项时用户应进行检测。使用ClassWizard处理WM_SYSCOM MAND消
 息
 并检测用户菜单的nID参数:
 
     void CMainFrame:: OnSysCommand (UINT nID,LPARAM lParam)
     {
     file://Determine if our system menu item was selected.
     if ( (nID & 0xFFF0)==IDM_MYSYSITEM)
     {
     file://TODO-process system menu item
     }
     else
     CMDIFrameWnd:: OnSysCommand (nID, lParam);
     }
 
   最后,一个设计良好的UI应用程序应当在系统菜单项加亮时在状态条显示一个 帮助
 信息,这可以通过增加一个包含系统菜单基ID的串表的入口来实现。
  -- 我
   既不能达而兼善天下
                     只好穷而独善自身
   青山处处  斯民如土矣……
  ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.253.41]
  | 
 
 
 |