标  题: 如何给系统菜单添加一个菜单项                     
发信人: Pacific (无情~~~Nolove), 信区: VisualC
发信站: BBS 水木清华站 (Fri Oct 16 17:27:08 1998)


    给系统菜单添加一个菜单项需要进行下述三个步骤:                               
    首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...       
可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000;                       
    其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用                        
CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加两个新的                
菜单项:                                                                         
                                                                                 
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)                        
{                                                                                
     …                                                                          
                                                                                 
     //Make sure system menu item is in the right range.                         
     ASSERT  (IDM_MYSYSITEM &0xFFF0)==IDM_MYSYSITEM);                            
    ASSERT (IDM-MYSYSITEM<0xF000);                                               
                                                                                 
     //Get pointer to system menu.                                               
     CMenu* pSysmenu=GetSystemmenu (FALSE);                                      
     ASSERT_VALID (pSysMenu);                                                    
     //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_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的串表的入口来实现。             

--
        老鸟有交待,中鸟要等待,菜鸟要忍耐。
        老鸟级功夫:吹牛、聊天、玩MUD 、发呆。
        中鸟级功夫:睡觉、灌水、玩游戏、NT&VC。
        菜鸟级功夫:学习、泡妞、玩篮球、And so on

        My E-Mail: Nolove@263.net

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: yazhou.bbs@bbs.net.t]
※ 修改:.fzx 于 Aug  9 16:51:24 修改本文.[FROM: heart.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.339毫秒