(delphi)Perform,SendMessage,PostMessage三者區別

(delphi)Perform,SendMessage,PostMessage三者區別

Perform():
     VCL的Perform()方法適用於所有的TControl派生對象。 Perform()可以向任何一個窗件或控件發送消息,只需要知道窗體或控件的實例。 Perform()需要傳遞3個參數:消息標識符,wParam和lParam。
要給一個窗件或控件發送一個消息,可以參照下面的代碼:
RetVal = ControlName->Perform(MessagID, (NativeInt)wParam,(NativeInt)lParam);
SendMessage()和PostMessage()
     有的時候, 可能需要向一個窗口發送一個消息,而又不知道這個窗口的實例。例如:可能要給一個非C++ Builder的窗口發送一個消息,而只有這個窗口的句柄。幸運的是,Windows有兩個API函數可以實現這一點:SendMessage()和PostMessage().這兩個函數幾乎是一樣的,它們的區別是:
SendMessage()直接把一個消息發給窗口過程,等消息被處理後才返回。 Postmessage()只是把消息發送到消息隊列,完成後即返回。

SendMessage()和PostMessage()是Windows API函數,這樣聲明的:
SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam):Integer;
PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam):LongBool;

hWnd 是接收消息的窗口的句柄
Msg 是消息標識符
wParam 是32位的特定附加信息。
lParam 是32位特定附加信息

文章出處 : 點擊打開鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章