自定义消息

基于窗体应用程序使用自定义的消息

  1. 在头文件中定义消息编号
// CustomMessageDlg.h : 头文件
//

#pragma once

#define WM_MYMSG WM_USER + 1 // 自定义消息定义

// CCustomMessageDlg 对话框
class CCustomMessageDlg : public CDialogEx
{

WM_USER以下的消息都是系统消息,所以自定义消息时,ID要比WM_USE大;

  1. 添加函数声明(用于响应自定义消息):
// 实现
protected:
    HICON m_hIcon;

    // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg LRESULT OnMyMsgHandler(WPARAM, LPARAM); // 添加函数声明(用于响应自定义消息)
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
  1. 在窗体实现中添加消息映射
BEGIN_MESSAGE_MAP(CCustomMessageDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, &CCustomMessageDlg::OnBnClickedButton1)
    ON_MESSAGE(WM_MYMSG, OnMyMsgHandler) // 添加自定义消息的映射
END_MESSAGE_MAP()
  1. 实现消息句柄
// 实现自定义消息句柄
LRESULT CCustomMessageDlg::OnMyMsgHandler(WPARAM, LPARAM)
{
    // TODO:  在此添加控件通知处理程序代码
    MessageBox(_T("收到自定义消息"), _T("提示"), MB_OK);
    return 0;
}
  1. 添加按钮,在按钮实现中发出一条自定义消息
void CCustomMessageDlg::OnBnClickedButton1()
{
    // TODO:  在此添加控件通知处理程序代码
    ::SendMessage(::AfxGetMainWnd()->m_hWnd, WM_MYMSG, 0, 0);
}
  1. 生成项目,点击按钮弹出对话框


    自定义消息_第1张图片
    image.png
  2. vs2013可以通过类向导添加自定义消息


    自定义消息_第2张图片
    image.png

你可能感兴趣的:(自定义消息)