自定义消息

方法1:

首先定义自定义消息ID,后面是一个常数。小于WM_USER的都是微软自定义的,自己定义的要比这个数大。

#define WM_MY_DEFINED_MSG  (WM_USER+101)

要处理这个消息,首先建立消息映射:

ON_MESSAGE(WM_MY_DEFINED_MSG,&CDEMO12Dlg::OnMyDefinedMsg)

其中CDEMO12Dlg::OnMyDefinedMsg是指定的消息映射函数

在头文件里声明消息映射函数:

afx_msg LRESULT OnMyDefinedMsg(WPARAM wParam ,LPARAM lParam);

然后在cpp里面写这个函数的定义:

LRESULT CDEMO12Dlg::OnMyDefinedMsg(WPARAM wParam ,LPARAM lParam)
{
	TCHAR szBuf[128]={0};  
	 _stprintf(szBuf,_T("收到自定义消息:ID=0x%X."),WM_MY_DEFINED_MSG);  
	 SetDlgItemText(IDC_OUTPUT,szBuf); 
	 return 0;
}

再写按钮函数,其意义是当点击按钮的时候,发送自己定义的消息,就是在静态文本框中显示字符串:

void CDEMO12Dlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	PostMessage(WM_MY_DEFINED_MSG,0,0);
}

方法2:

首先定义一个字符串常量,然后用消息注册函数去注册,会返回一个ID

#define MY_REGISTERED_MSG_STR _T("MY_MSG_STRING")
UINT WM_MY_REGISTERED_MSG;

在构造函数里添加注册windows消息函数注册字符串,就会得到这个ID,这个ID用WM_MY_REGISTERED_MSG来接受。

WM_MY_REGISTERED_MSG在上述定义

CDEMO12Dlg::CDEMO12Dlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CDEMO12Dlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	WM_MY_REGISTERED_MSG=RegisterWindowMessage(MY_REGISTERED_MSG_STR);
}
添加消息映射:

ON_REGISTERED_MESSAGE(WM_MY_REGISTERED_MSG,&CDEMO12Dlg::OnMyRegisteredMsg)

头文件中声明:
afx_msg LRESULT OnMyRegisteredMsg(WPARAM wParam ,LPARAM lParam);

定义函数:

LRESULT CDEMO12Dlg::OnMyRegisteredMsg(WPARAM wParam ,LPARAM lParam)
{
	TCHAR szBuf[128]={0};  
	 _stprintf(szBuf,_T("收到自定义消息2:ID=0x%X."),WM_MY_DEFINED_MSG);  
	 SetDlgItemText(IDC_OUTPUT,szBuf); 
	 return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值