sendmessage 自定义消息----------------


dialog中,
方法1,手动关联消息及处理函数,用ON_MESSAGE( , )
1.在CxxDlg的h文件中定义消息
#define WM_MY_DOSOME WM_USER+1 // do something
在CxxDlg的h文件中的AFX_MSG中加入一行消息处理函数的声明,afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2);如下
	//{{AFX_MSG(CTestmessageDlg)
	afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2);
	//}}AFX_MSG
2.在CxxDlg的cpp文件中的AFX_MSG_MAP中加入一行消息与消息处理函数的映射,ON_MESSAGE(WM_MY_DOSOME,DoSomeThing),如下
	//{{AFX_MSG_MAP(CTestmessageDlg)	
	ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)//消息WM_MY_DOSOME与消息处理函数DoSomeThing关联
	//}}AFX_MSG_MAP
在CxxDlg的cpp文件中加入消息处理函数的定义,
LRESULT CTestmessageDlg::DoSomeThing(WPARAM iParam1,LPARAM iParam2)
{
	MessageBox("收到消息了,我要开始做一些事情了。","收到",MB_OK);
	//可以运用iParam1,iParam2 来做一些事情。
	return 0;
}
在CxxDlg的cpp文件中的需要的地方加入发送消息的代码,
::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);	
//this->m_hWnd接收者句柄
//WM_MY_DOSOME发送的消息
//0,0 参数

方法2.利用已有的虚函数WindowProc窗口函数来接收消息并处理
1.在CxxDlg的h文件中定义消息
#define WM_MY_DOSOME WM_USER+1 // do something
2.ctrl+w为CxxDlg类增加虚函数WindowProc,填充函数体如下
LRESULT CTestmessage1Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (message==WM_MY_DOSOME)
	{
		AfxMessageBox("i got it");
	}
	return CDialog::WindowProc(message, wParam, lParam);
}
3.在CxxDlg的cpp文件中的需要的地方加入发送消息的代码,
::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);	



当然也可以发送系统预定义的一些消息,某些消息一经有预定义的处理函数
比如向窗口发送关闭消息即可关闭窗口
void CtseT1Dlg::OnBnClickedButton1()
{
	//::SendMessage(this->m_hWnd, WM_CLOSE, (WPARAM) 0, (LPARAM) 0);     
	SendMessageW( WM_CLOSE, (WPARAM) 0, (LPARAM) 0);  
}




refer to http://www.cnblogs.com/wqj1212/archive/2008/03/03/1089298.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值