東西真多...
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 方法,以處理控制項本身不處理的任何訊息。
以下是一些事件的訊息代碼
沒有留言:
張貼留言