Perform()與SendMessage()的不同
来源:互联网 发布:nodejs 数据接口开发 编辑:程序博客网 时间:2024/06/06 04:30
就像Windows發送消息給應用程序一樣,也可以有窗口與控件之間發送消息。C++ Builder提供了幾種在一個應用程序內部發送消息的方式:調用Perform()(這種方式不依靠于Windows API),以及調用SendMessage(),PostMessage() API函數
Perform()
VCL的Perform()方法適用于所有的TControl派生對象。Perform()可以向任何一個窗件或控件發送消息,只需要知道窗體或控件的實例。Perform()需要傳遞3個參數:消息標識符,wParam和lParam。
Perform()是這樣聲明的:
int __fastcall Perform(unsigned Msg, int WParam, int LParam);
要給一個窗件或控件發送一個消息,可以參照下面的代碼:
RetVal = ControlName->Perform(MessagID, (NativeInt)wParam, (NativeInt)lParam);
調用了Perform()後,它要等消息得到處理後才返回。Perform()把3個參數組裝成TMessage記錄,然後調用Dispatch()方法把消息傳遞給Windows的消息系統。
SendMessage()和PostMessage()
有的時候, 可能需要向一個窗口發送一個消息,而又不知道這個窗口的實例。例如:可能要給一個非C++ Builder的窗口發送一個消息,而只有這個窗口的句柄。幸運的是,Windows有兩個API函數可以實現這一點:SendMessage()和PostMessage().這兩個函數幾乎是一樣的,它們的區別是:
SendMessage()直接把一個消息發給窗口過程,等消息被處理後才返回。Postmessage()只是把消息發送到消息隊列,完成後即返回。
SendMessage()和PostMessage()是這樣聲明的:
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
hWnd 是接收消息的窗口的句柄
Msg 是消息標識符
wParam 是32位的特定附加信息。
lParam 是32位特定附加信息(王朝網路 wangchao.net.cn)
文章出處 : 点击打开链接
- Perform()與SendMessage()的不同
- Perform,SendMessage,PostMessage
- (delphi)Perform,SendMessage,PostMessage三者區別
- sendmessage diapatchmessage不同
- SDK中SendMessage与PostMessage消息的不同
- PostMessage,SendMessage跨不同权限进程通信失效的解决办法
- vc++ 不同对话框中传递信息的方法(基于自定义消息SendMessage)
- vc++ 不同对话框中传递信息的方法(基于自定义消息SendMessage)
- vc++ 不同对话框中传递信息的方法(基于自定义消息SendMessage)
- SendMessage在不同线程之间调用与本线程调用的区别
- 功能强大的SendMessage函数
- SendMessage的返回值
- 功能强大的SendMessage函数
- 有关Sendmessage的内容!!!
- PostMessage&SendMessage的区别
- 功能强大的SendMessage函数
- SendMessage的执行线程
- sendmessage的用法
- OnPaint()与OnDraw()
- 阻止jQuery事件冒泡
- VS2008下CEGUI 0.7.1的安装
- (delphi)Perform,SendMessage,PostMessage三者區別
- HDU 1596 find the safest road
- Perform()與SendMessage()的不同
- editplus配置详:
- jQuery的filter过滤重复结构的xml数据
- 64bit linux上的hsodbc
- 第一步:cocos2d-x-2.1.4创建项目
- HDU 1535 Invitation Cards
- 第二步:添加sprite精灵
- [LeetCode] Triangle
- yii基本安装配置介绍