基于窗體應用程序使用自定義的消息
- 在頭文件中定義消息編號
// 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);
}
-
生成項目,點擊按鈕彈出對話框
image.png -
vs2013可以通過類向導添加自定義消息
image.png