VC6中添加消息映射

   今天发现程序未显示About Box,分析发现,是因为程序未处理WM_SYSCOMMAND命令导致;但VC的ClassView里好像不能直接处理该消息;只好手动添加. 记录下方法和需要注意的地方。

 

   处理MFC的ClassView中没有定义的消息需要注意三个地方,如WM_SYSCOMMAND消息,可以接收系统菜单命令,但ClassView中没有,这时需要自己手动添加。
  

    一、在dialog的cpp中添加MessageMap:
   在BEGIN_MESSAGE_MAP(CTestDlg, CDialog)和END_MESSAGE_MAP()宏命令之间,加入: 

  1. ON_WM_SYSCOMMAND()

   二、在dialog的头文件中添加消息处理函数定义:
   在// Generated message map functions
      //{{AFX_MSG(CTestDlg)
  和//}}AFX_MSG
 DECLARE_MESSAGE_MAP() 之间加入:

  1.  afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

   三、在dialog的cpp文件中添加消息处理函数体:

  1. void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
  2. {
  3.     if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  4.     {
  5.         CAboutDlg dlgAbout;
  6.         dlgAbout.DoModal();
  7.     }
  8.     else
  9.     {
  10.         CDialog::OnSysCommand(nID, lParam);
  11.     }
  12. }

   若不添加第一步,编译不会出错,也可以运行,但不会获取对WM_SYSCOMMAND消息的处理权。

 

   添加完成后再打开ClassView可以看到该消息及处理函数已经列出来了。

 

   另外,实际上自定义消息的处理和这个基本上差不多。

   写作匆忙,欢迎大虾们指导、斧正!boythl#163.com

 

===================================

非注明转载的文章和blog在未特殊声明情况下一般为本人原创或整理,
原创文章版权本人(lonefox)所有;转载文章版权归原作者所有;

http://blog.csdn.net/boythl

欢迎转载,但请注明出处,保留作者和版权信息。

===================================

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值