请教各位:问个Delphi中消息传递的问题(我很穷,可是我皮很厚)(0分)

  • 主题发起人 主题发起人 netbug
  • 开始时间 开始时间
N

netbug

Unregistered / Unconfirmed
GUEST, unregistred user!
请看:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var i:integer;<br>begin<br>&nbsp;i:=button2.Handle;<br>&nbsp;postmessage(i,wm_user,0,0);<br>end;<br>我有几个问题想请教各位大虾:<br>一:在上面的例子中,我是想向button2发送消息,是不是这样写?<br>button2该如何接受并处理此消息?<br>二:我能不能向另一个窗体发送消息?如可以,<br>我该如何做?<br>谢谢.
 
《Delphi4 开发大全》175元,上下册上好象有。<br>BTW:我比你还穷,买不起,so ,回答不了你的问题:(
 
谢谢你帮我问了<br>我虽然还有分<br>却舍不得拿出来<br>sorry<br>
 
1, 是的就那样,<br>&nbsp; &nbsp; 有的不需要控制, 有的需要控制,<br>2,可以,找到 handle 就可以了,<br>&nbsp; &nbsp;比如 SendMessage(aForm.Handle, WM_SYSCOMMAND, ..., ...);<br>&nbsp; &nbsp;忘了,呵呵,
 
你发的这个消息,button2不会理的,因为消息的参数都没有。
 
PostMessage, PostMessageBynum, PostMessageBystring <br><br>VB声明 <br>Declare Function PostMessage&amp; Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)<br>Declare Function PostMessageByNum&amp; Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)<br>Declare Function PostMessageByString&amp; Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) <br>说明 <br>将一条消息投递到指定窗口的消息队列。投递的消息会在Windows事件处理过程中得到处理。在那个时候,会随同投递的消息调用指定窗口的窗口函数。特别适合那些不需要立即处理的窗口消息的发送 <br>返回值 <br>Long,如消息投递成功,则返回TRUE(非零)。会设置GetLastError <br>参数表 <br>参数 类型及说明 <br>hwnd Long,接收消息的那个窗口的句柄。如设为HWND_BROADCAST,表示投递给系统中的所有顶级窗口。如设为零,表示投递一条线程消息(参考PostThreadMessage) <br>wMsg Long,消息标识符 <br>wParam Long,具体由消息决定 <br>lParam Any,具体由消息决定 <br><br>Top<br>&nbsp;<br>
 
程云:<br>能不能给个例子,比如发消息给WINDOWS让它关闭一个打开的非用户窗口。
 
消息反射,在主窗口处理。<br>//(半开玩笑半认真)我很现目你的脸皮厚?怎么练的?<br>//要是我跟人学的时候也能这么厚脸皮,可能已经成高手了。
 
消息反射,在主窗口处理。<br>//(半开玩笑半认真)我很现目你的脸皮厚?怎么练的?<br>//要是我跟人学的时候也能这么厚脸皮,肯定早就成高手了。<br>&nbsp;<br>
 
哈哈! 从Button1发送消息给Button2一定是"小道消息"吧,咬咬耳朵就成了!!!
 
利用 TControl.perform()方法.
 
这是Delphi帮助里拷贝下来的,相信能看明白,这是定义消息响应函数的部分<br>至于发消息,就象前面说的,PostMessage (xx.Handle, WM_..., wParam, lParam);<br><br>const<br><br>&nbsp; CM_CHANGECOLOR = WM_APP + 400;<br><br>type<br><br>&nbsp; TMyComponent = class(TControl)<br>&nbsp; ...<br>protected<br>&nbsp; procedure CMChangeColor(var Message: TMessage); message CM_CHANGECOLOR;<br>end;<br><br>procedure TMyComponent.CMChangeColor(var Message: TMessage);<br><br>begin<br>&nbsp; Color := Message.lParam;<br>&nbsp; inherited;<br>end;
 
接受答案了.
 
后退
顶部