程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Perform()與SendMessage()的區別

Perform()與SendMessage()的區別

編輯:關於C++

就像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, wParam,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位特定附加信息

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved