为什么我自己定义的消息,想通过以广播消息的方式发送,可是程序的窗口无一能接收的到?(50分)

H

hxning

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我定义了一个自定义消息<br>const<br>&nbsp; &nbsp;sx_mymsg = wm_user + 100<br>通过广播消息方式发送给所有窗口<br>&nbsp; &nbsp;postmessage(HWND_BROACAST, sx_mymsg, 0, 0);<br><br>在意图接收该消息的窗口定义消息拦截函数<br>&nbsp; &nbsp;procedure mymsg(var msg: TMessage); message sx_mymsg;<br><br>可是,当发送了之后,并没有一个窗口能获得此消息,为何呢?<br><br>当我把广播消息改成直接发送给某一窗体,它即可接收<br>&nbsp; &nbsp;postmessage(form1.handle, sx_mymsg, 0, 0)<br><br>到底是哪里出了问题呢?
 
我想这就是<br>应用程序与窗体的区别了。
 
你用SetWindowLong()函数用你自定义的函数把替换掉窗体的WndProc函数试一试;<br><br>或使用DefaultHandler();<br><br>Procedure WndProc(var Msg:TMessage);Override;<br><br>procedure DefaultHandler(var Msg);Override;<br><br>注意:如果你使用SetWindowLong(),那么你最好在Initialization部分进行替换;<br>更详细的说明请参见DELPHI帮助!<br>
 
override了defaulthandler 和 winproc 都不行。是不是窗体根本没有受到广播消息,<br>是不是广播消息根本不会到达那些窗体呢?
 
顶部