在执行一个控件按钮的时候,发现收发数据延时,于是想采用发送消息的方式来解决这个问题。但是结果还是一样。
所以就地简单做了个实验。
这是按钮消息处理函数
void dlg_once::OnBnClickedButtonGet()
{
// TODO: 在此添加控件通知处理程序代码
parent->SendMessage(DlgOnceMessage);
printf("this is func\r\n");
}
消息DlgOnceMessage的处理函数
afx_msg LRESULT CyuvplayerDlg::OnDlgoncemessage(WPARAM wParam, LPARAM lParam)
{
//send_mode_comd(0x02,this);
Sleep(2000);
printf("this is msg1\r\n");
return 0;
}
睡眠2000ms是为了阻塞这个消息,考虑到运行速度过快,消息立马被处理。
消息的映射
ON_MESSAGE(DlgOnceMessage, &CyuvplayerDlg::OnDlgoncemessage)
实验结果
对此,表示对MFC的消息机制有点懵。
对于我的理解,消息机制大体上应该是这样:函数中发送一个消息后,应该继续执行下一行代码,而消息的处理应该是另开一个线程或者其它的方式来处理。但是实验结果相孛,必须等到这个消息处理完才执行函数的下一行代码。在此请大家帮忙解惑。谢谢