Perform()與SendMessage()的不同

本文详细介绍了C++ Builder中如何通过Perform()、SendMessage()和PostMessage()方法实现窗口与控件之间的消息传递,包括各方法的使用场景、参数解释及区别,帮助开发者更高效地进行应用程序内部的消息处理。
摘要由CSDN通过智能技术生成

就像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)

文章出處 : 点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值