首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

PostMessage请问

2012-02-03 
PostMessage请教?我在程序中定义了4个消息#defineWM_MYMSG_ch1WM_USER+101#defineWM_MYMSG_ch2WM_USER+102

PostMessage请教?
我在程序中定义了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个消息在消息队列中是一个一个按顺序处理的吗?如果不是,怎么做才能保证只有当前消息处理完成的才能处理下一个消息?代码有问题吗?

[解决办法]
4个消息在消息队列中不是一个一个按顺序处理的,要按顺序处理用SendMessage();
[解决办法]
SendMessage该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
[解决办法]
调用方采用 Post 或是 Send 区别只在于:调用者每次调用是否要等到处理结束。

如果你的处理函数 proc1, proc2 ... 和消息处理函数是同步的(就是说没有另起线程之类)
那么处理的顺序应该和 PostMessage 的顺序是一致的,而且是依次执行
[解决办法]
只会MFC的路过
[解决办法]
肯定是按你postMessage的顺序处理的。

热点排行