关于DispatchMessage函数返回的问题

YeTimmy 2007-07-06 11:02:39
MSDN 上关于该函数是这么说的
The DispatchMessage function dispatches a message to a window procedure. It is typically used to dispatch a message retrieved by the GetMessage function.

Syntax

LRESULT DispatchMessage( const MSG *lpmsg
);
Parameters

lpmsg
[in] Pointer to an MSG structure that contains the message.
Return Value

The return value specifies the value returned by the window procedure. Although its meaning depends on the message being dispatched, the return value generally is ignored.

Return Value里写着The return value specifies the value returned by the window procedure.意思应该是说DispatchMessage函数是要到窗口处理函数完成后才返回的(根据窗口处理函数的返回值返回嘛)

但是我在一个窗口处理函数里面写上这样的话
static int m = 0;
cout << "Message5 : \t\t\t\t" << m++ << endl;

MessageBox("5");

for (int p = 0; p < 15; ++p)
{
cout << "Message5 : \t" << p << endl;
}
它执行到MessageBox("5")后就返回了

我是这样测试的,创建一个MFC基于Dialog的程序,按下一个按钮后,发送10几个自定义的命令,按我的理解应该是每处理完一个消息,再接下去处理另外一个消息,把上面的MessageBox("5")函数去掉的话,结果确实是如此.
但是加了MessageBox("5")这句以后,情况就不是这样了,它是全部处理完MessageBox函数以前的步骤(也是按顺序来,没错),就处理下一条消息了

我想问的是,这是怎么一回事,MSDN上的DispatchMessage有特殊情况例外吗?
...全文
394 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
YeTimmy 2007-07-13
  • 打赏
  • 举报
回复
还没弄明白,有高人出来说下吗?
YeTimmy 2007-07-11
  • 打赏
  • 举报
回复
能说的明白些吗
接过消息响应权是什么意思
shawnwan 2007-07-10
  • 打赏
  • 举报
回复
MessageBox出来就接过消息响应权啦
YeTimmy 2007-07-08
  • 打赏
  • 举报
回复
感谢回复;)
YeTimmy 2007-07-08
  • 打赏
  • 举报
回复
to : CathySun118(斯年)
那它是怎么破坏的,或原理是什么
函数不是写着说要等窗口处理函数完成后才返回的
那执行到MessageBox("5")的时候发生了什么情况
它不是没返回吗?怎么可以破坏顺序???
YeTimmy 2007-07-08
  • 打赏
  • 举报
回复
lyg_zy 2007-07-07
  • 打赏
  • 举报
回复
CathySun118(斯年) 正解。
CathySun118 2007-07-07
  • 打赏
  • 举报
回复
MessageBox("5");破坏了消息循环的顺序,你可以用TRACE替代MessageBox("5");来测试效果
wy2001wy 2007-07-06
  • 打赏
  • 举报
回复
不大清楚,没研究过,也许是MessageBox里的消息循环捣的鬼??
YeTimmy 2007-07-06
  • 打赏
  • 举报
回复
up 下, 太长了???
怎么都没人回复下-_-#

16,472

社区成员

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

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

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