使对话框上的关闭按钮失效

来源:互联网 发布:淘宝网店交易网 编辑:程序博客网 时间:2024/06/10 17:36

[问题提出]
    有很多网友提出如何使小X的功能不好使.下面就说一下.

  [解决方法]
    用两种解决方法:
     1)重载OnClose();
     2)很有意思的方法:这个小X是系统菜单的一部分,所以只要获得此系统菜单的句柄,改变菜单属性即可.

  [程序实现]
    假设你已有了名为My的对话框工程.
     1)建立WM_CLOSE消息的相应函数:
    void CMyDlg::OnClose() 
    {
     // TODO: Add your message handler code here and/or call default
    
     //  CDialog::OnClose();//将这句注释掉.
    }
   
     2)通过CWnd::GetSystemMenu得到句柄,再通过CMenu::ModifyMenu或CMenu::EnableMenuItem(参数已在菜单中讲过)函数改变系统菜单的属性.

     a)CWnd::GetSystemMenu配合CMenu::ModifyMenu:
     BOOL CMyDlg::OnInitDialog()
     { 
      CDialog::OnInitDialog();

      // TODO: Add extra initialization here
      CMenu *mnu=this->GetSystemMenu(FALSE);
      mnu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);
      return TRUE;  // return TRUE  unless you set the focus to a control
     }

     b)CWnd::GetSystemMenu配合CMenu::EnableMenuItem:
     BOOL CMyDlg::OnInitDialog()
     { 
      CDialog::OnInitDialog();

      // TODO: Add extra initialization here
      CMenu *mnu=this->GetSystemMenu(FALSE);
      mnu->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);
      return TRUE;  // return TRUE  unless you set the focus to a control
     }
    运行一下看看.

原创粉丝点击