透析C#事件本質
C#事件本質上是對消息的封裝,是IDE編程環境為了簡化編程而提供的有用的工具。這個封裝是在窗體過程中實現的。每種IDE封裝了許多Windows的消息,例如:
事件
消息
OnActivate
WM_ACTIVATE
OnClick
WM_XBUTT
ONDOWNOnCreate
WM_CREATE
OnDblClick
WM_XBUTT
ONDBLCLICKOnKeyDown
WM_KEYDOWN
OnKeyPress
WM_CHAR
OnKeyUp
WIN_KEYUP
OnPaint
WM_PAINT
OnResize
WM_SIZE
OnTimer
WM_TIMER
了解了這一點后,我們完成可以封裝自己的C#事件。通過上面的介紹,相信各位已經對Windows消息機制有了一定的理解了。通過Windows消息編程,我們不但可以實現很多常規功能,而且可以實現很多IDE類庫沒有提供的功能;另外,我們還可以通過消息鉤子,對消息進行截獲,改變其默認的處理函數,從而突破平臺或軟件功能的限制,極大的擴展程序的功能;我們還可以修改默認的窗體過程,按自己的要求來響應消息;或者自定義消息,實現程序之間的即時通訊等等。通過更加深入的學習,我們還會接觸到更多與Windows消息機制相關其它Windows相對比較底層的知識,如果能夠這樣,驀然回首,你會發現自己原來離“高手”不遠了。
窗體過程實際上是一個回調函數。所謂的回調函數,實際上就是由Windows操作系統或外部程序調用的函數。回調函數一般都有規定的參數格式,以地址方式傳遞給調用者。窗口過程中是Windows操作系統調用了,在一個窗口創建的時候,在分配窗體句柄的時候就需要傳入回調函數地址。那為什么我們平時編程看不到這個回調函數呢?這是由于我們的編程工具已經為我們生成了默認的窗體過程,這個過程的要做的事情就是判斷不同的消息類型,然后做出不同的處理。例如可以為鍵盤或鼠標輸入生成C#事件等。
【編輯推薦】