做项目的时候遇到MFC消息的一个问题

xh.wang 2017-01-12 11:00:23
在执行一个控件按钮的时候,发现收发数据延时,于是想采用发送消息的方式来解决这个问题。但是结果还是一样。
所以就地简单做了个实验。
这是按钮消息处理函数
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的消息机制有点懵。
对于我的理解,消息机制大体上应该是这样:函数中发送一个消息后,应该继续执行下一行代码,而消息的处理应该是另开一个线程或者其它的方式来处理。但是实验结果相孛,必须等到这个消息处理完才执行函数的下一行代码。在此请大家帮忙解惑。谢谢



...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xh.wang 2017-01-12
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
parent->SendMessage(DlgOnceMessage); 跳过 消息队列, 直接执行 用 PostMessage() 但 不保证 一定 收到
谢谢,已经得到解决了。
xh.wang 2017-01-12
  • 打赏
  • 举报
回复
引用 1 楼 piaobotudou 的回复:
去查查SendMessage和PostMessage的区别
谢谢问题已经解决。做嵌入式开发,平常只用vs写点小程序,一言惊醒。非常感谢。
schlafenhamster 2017-01-12
  • 打赏
  • 举报
回复
parent->SendMessage(DlgOnceMessage); 跳过 消息队列, 直接执行 用 PostMessage() 但 不保证 一定 收到
微型蚂蚁 2017-01-12
  • 打赏
  • 举报
回复
去查查SendMessage和PostMessage的区别

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧