「 C++ & MFC 」“添加用户自定义消息及消息响应函数方法”讲解

    2025-06-27 10:28:52

    一、前言

    本文介绍 两种方法 添加用户自定义消息及消息响应函数。

    第一种,用户手动添加两个文件((.h)和 (.cpp))的内容。 第二种,利用 MFC 的集成功能,自动添加。(推荐)

    二、讲解

    1. 方法一: 用户手动添加。

    步骤:

    (1)在“ .h ”文件中:

    ①. 声明消息,代码如下:

    #define WM_MyMessage WM_USER+100

    (附:MFC自有的消息都是在WM_USER内的,所以自定义的消息要比WM_USER大。)

    ②. 在类声明中声明消息映射,代码如下:

    DECLARE_MESSAGE_MAP()

    ③. 在类声明中定义消息处理函数,代码如下:

    afx_msg LRESULT OnMyMessage(WPARAM wParam ,LPARAM lParam);

    (2)在“ .cpp ”文件中 :

    ①. 定义消息映射,代码如下:

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

    ON_MESSAGE(MyMessage, &CAboutDlg::OnMymessage)

    END_MESSAGE_MAP()

    ②. 定义消息处理函数,代码如下:

    afx_msg LRESULT CAboutDlg::OnMymessage(WPARAM wParam, LPARAM lParam)

    {

    return 0;

    }

    2. 方法二: MFC 软件添加。

    步骤:

    ①. 在“ .h ”文件中声明消息,代码如下:

    #define WM_MyMessage WM_USER+100

    (附:MFC自有的消息都是在WM_USER内的,所以自定义的消息要比WM_USER大。)

    ②. 声明消息映射、声明消息处理函数、定义消息映射、定义消息处理函数,方法如下:

    可用类向导中消息->添加自定义消息,添加的消息名为WM_MyMessage,自动添加消息处理函数。则系统自动在头文件中添加消息处理函数的声明,.cpp文件中添加消息映射处理及消息处理函数的定义,只需添加定义的具体内容即可。

    (附:软件自动生成结果展示:

    声明消息映射部分:

    DECLARE_MESSAGE_MAP()

    声明消息处理函数部分:

    afx_msg LRESULT OnMymessage(WPARAM wParam, LPARAM lParam);

    定义消息处理函数部分:

    afx_msg LRESULT CDialog1::OnMymessage(WPARAM wParam, LPARAM lParam)

    {

    return 0;

    }

    定义消息映射处理部分:

    BEGIN_MESSAGE_MAP(CDialog1, CDialogEx)

    ON_MESSAGE(WM_MyMessage, &CDialog1::OnMymessage)

    END_MESSAGE_MAP()

    3. 发送自定义消息

    发送自定义消息,可使用如下两个函数:

    SendMessage(WM_MyMessage,0,0);

    或者

    PostMessage(WM_MyMessage,0,0);