有关消息处理的问题(50分)

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

yyok

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样两个程序,
程序A使用一个定时器不断地向程序B发送自定义消息WM_USER+1000,
程序B使用 procedure recieve(var Msg:TMessage);Message WM_USER+1000;
但这样有一个问题,当程序B没有焦点时(标题栏为灰色),就无法接收到消息。
请问如何解决这个问题。
 
想知道為什么﹗聽一下課﹗
 
用application.onmessage事件是试试
 
我也不知道,谁来说说看,我听听
 
不会呀,窗口没有焦点照样可以收到消息的,
是不是你程序的其他地方有什么问题?
 
当然可以受到,要不然他如何接收 获取焦点 的消息,从而把自己带到前台?
 
我自己也感觉很奇怪。
 
与焦点在不在没有任何关系,消息都丢在消息队列的!肯定是你的错!
 
你的消息是传递什么的?
检查一下程序B消息处理代码吧
 
如果CPU的占用不高的话,不太可能丢失,
怀疑你的消息处理代码有问题,可能在失去焦点时,虽然处理了,但因为没有焦点,而没有出现你希望的结果而已
 
用findwindow 来找到程序B的handle,这样不管是在有无焦点的情况下都可以传数据啦。
var
Bhandle:Thandle;
Bhandle:=findwindow(nil,'程序B的窗体caption');
例:sendmessage(Bhandle,WM_Colose,0,0);
同理:B也可以自由的给A传消息,只要约定好规则,这很容易/

 
后退
顶部