zoukankan      html  css  js  c++  java
  • MFC的自定义消息(用户消息)的定义与使用

    自定义消息的响应和资源消息的响应有很多类似之处;资源消息的响应是以资源的ID号作为标识的;自定义的消息要自己声明消息ID;

    一. 定义:

      在.h文件中做的工作:

      第一步要声明消息:

        #define WM_MYMSG WM_USER+200

      第二步要在类声明中声明消息映射:

        DECLARE_MESSAGE_MAP()

      第三步要在类声明中定义消息处理函数:

        afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);

      在.cpp中做的工作:

      第四步要实现消息映射:

        BEGIN_MESSAGE_MAP()

        ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)

        END_MESSAGE_MAP()

      第五步要实现消息处理函数(当然可以不实现):

        LRESULT CMainFrame::OnMyMsgHandler(WPARAM w,LPARAM l)

        {

          AfxMessageBox("Hello,World!");

          return 0;

        }

    二. 使用

    1. 如果该自定义消息所在的类是有CWnd派生出来的,且在本类中调用,那么我们可以调用CWnd::SendMessage()函数,具体定义为:

    LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

    此时我们只需要在引发消息的地方添加如下代码:

    SendMessge(WM_MYMSG,0,0);

    如果我们想在不同的情况下发送用户消息,我们只需要将SendMessage的后两个参数wParam,lParam加以标识即可;在消息处理函数,写一个if条件语句(或switch语句)就可以了;将不同情况下的用户消息区分开;

    2. 如果不在本类中响应自定义消息;那么我们只能用win32 的API函数;例如,当自定义消息在CMainFrame中,而触发消息的地方不在CMainFrame类中,那么我们可以用如下语句:

    ::SendMessge(::AfxGetMainWnd()->m_hWnd,WM_MYMSG,0,0);

    111
  • 相关阅读:
    hdu 1425 sort 解题报告
    codeforces B. Jeff and Periods 解题报告
    codeforces A. Jeff and Digits 解题报告
    codeforces B. Xenia and Spies 解题报告
    Python 条件判断的使用
    Python Apache日志处理脚本(初稿)
    Python函数定义
    Python多条件配合使用
    Python循环的使用(2)
    NavigationController导航栏中添加多个UIBarButtonItem
  • 原文地址:https://www.cnblogs.com/zwj-199306231519/p/12498994.html
Copyright © 2011-2022 走看看