基于窗体应用程序使用自定义的消息
- 在头文件中定义消息编号
// CustomMessageDlg.h : 头文件
//
#pragma once
#define WM_MYMSG WM_USER + 1 // 自定义消息定义
// CCustomMessageDlg 对话框
class CCustomMessageDlg : public CDialogEx
{
WM_USER以下的消息都是系统消息,所以自定义消息时,ID要比WM_USE大;
- 添加函数声明(用于响应自定义消息):
// 实现
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()
- 在窗体实现中添加消息映射
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()
- 实现消息句柄
// 实现自定义消息句柄
LRESULT CCustomMessageDlg::OnMyMsgHandler(WPARAM, LPARAM)
{
// TODO: 在此添加控件通知处理程序代码
MessageBox(_T("收到自定义消息"), _T("提示"), MB_OK);
return 0;
}
- 添加按钮,在按钮实现中发出一条自定义消息
void CCustomMessageDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
::SendMessage(::AfxGetMainWnd()->m_hWnd, WM_MYMSG, 0, 0);
}
-
生成项目,点击按钮弹出对话框
-
vs2013可以通过类向导添加自定义消息