使用Tab控件时子主窗口发送多个消息

1. 在Resource.h文件中定义消息

#define WM_OpenComm_event  WM_USER + 101
#define WM_CommTx_event  WM_USER + 102

注意,当新增加控件后,这些在Resouce.h中添加的语句会被清除,需重新再添加一次。

 

2. 在父窗口的.h文件,类定义中添加对应的消息处理函数,作为类的成员函数:

	afx_msg LRESULT OnOpenComm(WPARAM wParam, LPARAM iParam);
	afx_msg LRESULT OnCommTx(WPARAM wP, LPARAM iP);


 

3. 在父窗体的.cpp文件中,增加各消息的消息映射

        ON_MESSAGE(WM_OpenComm_event, OnOpenComm)
	ON_MESSAGE(WM_CommTx_event, OnCommTx)



4. 完成消息对应处理函数的内容:

LRESULT CPCR_ChipDlg::OnCommTx(WPARAM wP, LPARAM iP)
{
//	SendCom(dataNum);

	AfxMessageBox("Receive Message");

	return 0;
}


 

LRESULT CPCR_ChipDlg::OnOpenComm(WPARAM wParam, LPARAM iParam)
{
	//open com
	if(m_ctrlComm.GetPortOpen())
		m_ctrlComm.SetPortOpen(FALSE);
	m_ctrlComm.SetCommPort(ComNum);		// 打开串口
	if(!m_ctrlComm.GetPortOpen())
		m_ctrlComm.SetPortOpen(TRUE);
	else
		AfxMessageBox("can not open serial port");
	
	m_ctrlComm.SetSettings("9600,n,8,1");	//波特率9600,无校验,8个数据位,1个停止位
	m_ctrlComm.SetInputMode(1);				//1:表示以二进制方式检取数据
	
	//	m_ctrlComm.SetRThreshold(1);			//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
	m_ctrlComm.SetRThreshold(ComByteNum);			//本案一个包有35个有效字节
	//定接收33个字符时引发OnComm事件
	
	//	m_ctrlComm.SetInputLen(1);				//设置当前接收区数据长度为0
	m_ctrlComm.SetInputLen(ComByteNum);				//本案中设置接收buffer数据长度为33
	m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据

	AfxMessageBox("Open Comm successfully");

	return 0;
}

注意,函数最后要加 return 0;

 

5. 在子对话框需要发送消息的地方,执行发送消息语句:

	<span style="color:#000000;">WPARAM a=8;
	LPARAM b=9;
	HWND hwnd = AfxGetApp()->GetMainWnd()->GetSafeHwnd();
	
	::SendMessage(hwnd,WM_CommTx_event,a,b);
</span>

 

重要:

    WPARAM a=8;LPARAM b=9;

    HWND hwnd = AfxGetApp()->GetMainWnd()->GetSafeHwnd();

    ::SendMessage(hwnd,WM_CommTx_event,a,b);

 

参考文章:

http://blog.csdn.net/phenixyf/article/details/9300425

http://blog.csdn.net/phenixyf/article/details/41808117

http://blog.csdn.net/phenixyf/article/details/11383509

http://blog.csdn.net/phenixyf/article/details/16871623

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值