在程序的系统菜单中加入自定义项

1、在OnInitDialog中,或其它初始函数中加下:
// 注意,菜单的资源id的值是有讲究的,要定义成0x0**0的样子,在以下检查是否符合这个条件
    ASSERT((IDM_ABOUTBOX  &   0xFFF0 ==  IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX 
<   0xF000 );  // >0xF000的是系统定义的,所以俺们不能用
    ASSERT((IDM_SET_AUDIO  &   0xFFF0 ==  IDM_SET_AUDIO);
    ASSERT(IDM_SET_AUDIO 
<   0xF000 );
    ASSERT((IDM_AUTO_ANSWER 
&   0xFFF0 ==  IDM_AUTO_ANSWER);
    ASSERT(IDM_AUTO_ANSWER 
<   0xF000 );
    ASSERT((IDM_SET_TOP_MOST 
&   0xFFF0 ==  IDM_SET_TOP_MOST);
    ASSERT(IDM_SET_TOP_MOST 
<   0xF000 );

    CMenu
*  pSysMenu  =  GetSystemMenu(FALSE);
    
if  (pSysMenu  !=  NULL)
    
{
        CString strMenu;
            pSysMenu
->AppendMenu(MF_SEPARATOR);
            strMenu.LoadString(IDS_SET_AUDIO); 
//在资源中的字符串中定义的
            pSysMenu->AppendMenu(MF_STRING, IDM_SET_AUDIO, strMenu);
            strMenu.LoadString(IDS_AUTO_ANSWER);
            pSysMenu
->AppendMenu(m_AutoAnswer ? MF_CHECKED:MF_UNCHECKED, IDM_AUTO_ANSWER, strMenu);
            strMenu.LoadString(IDS_SET_TOP_MOST);
            pSysMenu
->AppendMenu(m_topMost ? MF_CHECKED:MF_UNCHECKED, IDM_SET_TOP_MOST, strMenu);
            strMenu.LoadString(IDS_ABOUTBOX);
            pSysMenu
->AppendMenu(MF_STRING, IDM_ABOUTBOX, strMenu);
    }
 
2、在OnSystemCommand中(注意这是个系统消息处理函数,所以要有消息映射机制)
     if  ((nID  &   0xFFF0 ==  IDM_ABOUTBOX)
    
{
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值