zoukankan      html  css  js  c++  java
  • 为何在自定义消息处理函数中无法利用wParam或lParam传递指针?

    答:利用ON_COMMAND()宏创建的自定义消息处理机制确实无法使用wParam与lParam参数,这是由于ON_COMMAND()宏决定的。如果需要使用wParam与lParam参数,那么应当使用ON_MESSAGE()宏,由它扩展生成的消息处理函数的原型中才有这两个参数。

    在.H文件中需要加入#define WM_MYMSG WM_USER+5以自定义一个消息,并在消息处理映射表中加入afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam)进行自定义消息的处理函数声明,这个声明一定要放在DECLARE_MESSAGE_MAP()宏之前。

    afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); //自定义消息的处理函数声明在.CPP文件中的消息映射表(BEGIN_MESSAGE_MAP与END_MESSAGE_MAP宏之间的内容)中需要加入ON_MESSAGE(WM_MYMSG, OnMyMessage)宏在自定义消息与其处理函数间建立映射关系,并实现消息处理函数void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)。

    void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
    //从lParam中取出CString对象的指针,并将字符串内容在IDC_MSGEDIT中显示出来
    {
      CString* pStr = (CString*) lParam;
      ASSERT(pStr != NULL);
          
      CEdit* pEdit = (CEdit *) GetDlgItem(IDC_MSGEDIT);
      ASSERT(pEdit != NULL);

      pEdit->SetWindowText(*pStr);
    }

    下载源代码


    ON_COMMAND用来处理WM_COMMAND消息。老式的windows控件发送WM_COMMAND作为对父窗口的通知消息。另外,菜单,工具栏也向框架窗口发送WM_COMMAND消息。   
     ON_MESSAGE主要用来处理用户自定义消息。

  • 相关阅读:
    pat1111-1120
    pat1101-1110
    pat1091-1100
    pat1081-1090
    pat1071-1080
    pat1061-1070
    2017华为软件精英挑战赛总结
    pat1051-1060
    【转】WPF中PasswordBox控件的Password属性的数据绑定
    Python学习-41.Python中的断言
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1089029.html
Copyright © 2011-2022 走看看