
東西真多...
windows無論你做甚麼動作他都會產生一個訊息
比如說 按下鍵盤,放開鍵盤,移動滑鼠,按下滑鼠,移動視窗,最小化視窗..
所以可以透過覆寫WndProc Method可以處理所有你想處理的訊息~
有關這方面的文章可以看看蔡學鏞的-揭開訊息迴圈的神秘面紗
Control.WndProc 方法
處理 Windows 訊息。
範例
下列程式碼範例將示範如何覆寫 WndProc 方法以處理 Message 結構中所示的作業系統訊息。在這個範例中處理的 WM_ACTIVATEAPP 作業系統訊息可以讓您知道另一個應用程式將成為作用中的時間。
protected override void WndProc(ref Message m)
{
const int WM_ACTIVATEAPP = 0x001C;
// Listen for operating system messages.
switch (m.Msg)
{
// The WM_ACTIVATEAPP message occurs when the application
// becomes the active application or becomes inactive.
case WM_ACTIVATEAPP:
// The WParam value identifies what is occurring.
appActive = (((int)m.WParam != 0));
// Invalidate to get new text painted.
this.Invalidate();
break;
//case.......more message you want to process
}
base.WndProc(ref m);
}
備註
所有訊息在透過 PreProcessMessage 方法過濾後,都會被傳送至 WndProc。
WndProc 方法完全對應於 Windows WindowProc 函式。如需有關處理 Windows 訊息的詳細資訊,請參閱 WindowProc 函式 (英文)。
繼承者注意事項繼承的控制項應呼叫基底類別的 WndProc 方法,以處理控制項本身不處理的任何訊息。
以下是一些事件的訊息代碼
沒有留言:
張貼留言