2012-04-16 48 views

回答

4

WndProc是WinForms如何提供圍繞Win32窗口消息的包裝,使用更易於使用和理解.NET層。

通常它的工作原理如下。以WM_LBUTTONDOWN窗口消息的示例爲例。 Windows.Forms.Control.WndProc將攔截此消息並從消息的WPARAM和LPARAM中提取相關信息。然後它調用受保護的虛擬方法OnMouseDown,將相關信息很好地打包成一個MouseEventArgs。然後,實現將在其自身處理結束時觸發MouseDown事件。

因此,處理一組OnXXXX方法/ XXXX事件要比直接攔截Windows消息容易得多。

但是,如果您感興趣的Windows消息不是由WinForms處理?在這種情況下,您可以重寫WndProc並直接處理它。另一個用途是攔截一條消息,然後在控制本身有機會處理消息之前丟棄它。或者您可以創建自定義消息以在應用程序內的控件之間發送。當您希望查看控件收到的每條消息時,它們對於調試也很有用,您只需在一處添加日誌記錄。

2

.NET是Win32的一個包裝。它不公開100%的Windows中所有方法,事件和屬性。

所以有時你需要在封面下。

然而,它不是你要找的東西 - 當你的問題需要它時,一個好的'堆棧交換搜索通常會讓你知道。

相關問題