消息获取的奇怪问题 ( 积分: 100 )

  • 主题发起人 主题发起人 yellowfish
  • 开始时间 开始时间
Y

yellowfish

Unregistered / Unconfirmed
GUEST, unregistred user!
以下下结构在主程序运行正常,可是放到线程中调用就一直无法满足((Msg.message = WM_USER_STARTWALKING) and (Msg.hwnd = 0)) 的条件,出现死循环。
哪位大虾指点一下。
while (GetMessage(Msg, 0, 0, 0))do
begin
if ((Msg.message = WM_USER_STARTWALKING) and (Msg.hwnd = 0)) then
begin
PostQuitMessage(0);
.....
.....
end else
DispatchMessage(Msg);
end;
 
以下下结构在主程序运行正常,可是放到线程中调用就一直无法满足((Msg.message = WM_USER_STARTWALKING) and (Msg.hwnd = 0)) 的条件,出现死循环。
哪位大虾指点一下。
while (GetMessage(Msg, 0, 0, 0))do
begin
if ((Msg.message = WM_USER_STARTWALKING) and (Msg.hwnd = 0)) then
begin
PostQuitMessage(0);
.....
.....
end else
DispatchMessage(Msg);
end;
 
while (GetMessage(Msg, 0, 0, 0))do
这个改为
while (GetThreadMessage(Msg, 0, 0, 0))do
试试
 
没有GetThreadMessage这个函数啊
 
好像是放在线程中的时候GetMessage后 Msg.message 和Msg.hwnd 没发生任何变化,不知道怎么回事……
 
哦,是没有,试试PeekMessage方法。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2554101
看看这个,自己改改!
 
while (GetMessage(Msg, 0, 0, 0))do
这个改为
while (GetThreadMessage(Msg, 0, 0, 0))do
试试
...........
没有GetThreadMessage这个函数啊
..............
哦,是没有,.......
说实在的,看了这段对话我肚子笑痛了.
 
原因可能是线程根本没收到这个消息.
主线程.线程 和主窗口,子窗口之间的消息分发机制并不相同.
 
参考
http://www.delphibbs.com/keylife/iblog_show.asp?xid=1193
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
571
import
I
I
回复
0
查看
2K
import
I
后退
顶部