PostMessage请教?

TripH0101 2010-04-03 10:45:42
我在程序中定义了4个消息
#define WM_MYMSG_ch1 WM_USER+101
#define WM_MYMSG_ch2 WM_USER+102
#define WM_MYMSG_ch3 WM_USER+103
#define WM_MYMSG_ch4 WM_USER+104

重载了消息处理函数:
void __fastcall TFDownload::WndProc(Messages::TMessage &Msg)
{

if(Msg.Msg==WM_MYMSG_ch1)
{
proc1();
}
else if(Msg.Msg==WM_MYMSG_ch2)
{
proc2();
}
else if(Msg.Msg==WM_MYMSG_ch3)
{
proc3();
}
else if(Msg.Msg==WM_MYMSG_ch4)
{
proc4();
}

else
TForm::WndProc(Msg);
}

用PostMessage(FDownload->Handle,WM_MYMSG_ch1, 0,0);
。。。。。。。。。。。。发送消息
请问这4个消息在消息队列中是一个一个按顺序处理的吗?如果不是,怎么做才能保证只有当前消息处理完成的才能处理下一个消息?代码有问题吗?
...全文
178 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
regersubadm 2010-04-06
  • 打赏
  • 举报
回复
肯定是按你postMessage的顺序处理的。
验证码识别 2010-04-05
  • 打赏
  • 举报
回复
只会MFC的路过
TripH0101 2010-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 z4none 的回复:]

调用方采用 Post 或是 Send 区别只在于:调用者每次调用是否要等到处理结束。

如果你的处理函数 proc1, proc2 ... 和消息处理函数是同步的(就是说没有另起线程之类)
那么处理的顺序应该和 PostMessage 的顺序是一致的,而且是依次执行
[/Quote]

是同步的,没有另起线程
z4none 2010-04-04
  • 打赏
  • 举报
回复
调用方采用 Post 或是 Send 区别只在于:调用者每次调用是否要等到处理结束。

如果你的处理函数 proc1, proc2 ... 和消息处理函数是同步的(就是说没有另起线程之类)
那么处理的顺序应该和 PostMessage 的顺序是一致的,而且是依次执行
YeBinYe 2010-04-03
  • 打赏
  • 举报
回复
SendMessage该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
YeBinYe 2010-04-03
  • 打赏
  • 举报
回复
4个消息在消息队列中不是一个一个按顺序处理的,要按顺序处理用SendMessage();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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