delphi 如何用消息发送一个记录

 我来答
传彩也0S
推荐于2016-09-16 · TA获得超过1898个赞
知道小有建树答主
回答量:636
采纳率:50%
帮助的人:250万
展开全部
正如Windows发送消息给应用程序窗口一样,我们偶尔也需要在应用程序的窗口和控件之间发送消息。Delphi提供了几种途径发送消息,例如Perform()方法(它不依赖Windows API)和SendMessage()、PostMessage() API函数。
(一)Perform()方法
VCL为所有的TControl派生类提供了Perform()方法:Perform()可以发送消息给任何已知对象实例的窗体或控件对象。Perform()方法有3个参数:消息、它对应的lParam和wParam,如下所示:
Function TControl1.Perform(Msg: Cardinal; wParam,lParam: Longint):Longint;
要发送一条消息给一个窗体或控件,使用下面的格式:
RetVal:=ControlName.Perform(MessageID, wParam,lParam);
Perform()是同步调用的,因此直到消息被处理完毕,才能得到返回值。Perform()方法把它的参数组合成一个TMessage记录,然后调用该对象的Dispatch()方法去发送这条消息——绕开了Windows API消息系统。
(二)SendMessage()和PostMessage() API函数
有时候需要发送消息给某个窗口,但并不知道这个窗口的Delphi对象实例。例如我们可能希望发送一条消息给一个非Delphi窗口,但是我们只有该窗口的句柄。幸运的是,Windows提供了两个API:SendMessage()和PostMessage()。这两个函数基本上是相同的,只有一点区别,区别之处在于:SendMessage()和Perform()类似,都是同步调用的,消息直接发往目的窗口,该消息被处理完毕才返回;Postmessage()是异步调用的,发送消息给Windows消息序列,然后立即返回。
SendMessage()和PostMessage()的定义如下:
Function SendMessage(hWnd:HWND;Msg:UINT;wParam:WPARAM;lParam:LPARAM): LRESULT;stdcall
Function PostMessage(hWnd:HWND;Msg:UINT;wParam:WPARAM;lParam:LPARAM): LRESULT;stdcall
上面的定义中,hwnd是消息目的地的窗口句柄,Msg是消息ID、wParam和lParam是32位附加信息。
说明:虽然SendMessage()和PostMessage()用法相近,它们各自的返回值是不同的。SendMessage()返回被处理的消息的结果值,但是PostMessage()返回的只是一个布尔值,表示是否该消息被放入到目标窗口队列中。另外一个方面,SendMessage()是同步调用的,PostMessage()是异步调用的
ayi033
2014-01-20 · TA获得超过144个赞
知道小有建树答主
回答量:317
采纳率:100%
帮助的人:104万
展开全部
发送他的地址就行了
type MyRecord = Record
DD:Double
end;
pMyRecod = ^MyRecord;
postmessage(handle,message,integer(pMyRecord),0);
用的时候pMyRecord(message.wParam);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gbstocker
2014-01-19
知道答主
回答量:76
采纳率:0%
帮助的人:9.2万
展开全部
WM__COPYDATA
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式