透析C#事件本質(zhì)
C#事件本質(zhì)上是對消息的封裝,是IDE編程環(huán)境為了簡化編程而提供的有用的工具。這個封裝是在窗體過程中實現(xiàn)的。每種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#事件。通過上面的介紹,相信各位已經(jīng)對Windows消息機(jī)制有了一定的理解了。通過Windows消息編程,我們不但可以實現(xiàn)很多常規(guī)功能,而且可以實現(xiàn)很多IDE類庫沒有提供的功能;另外,我們還可以通過消息鉤子,對消息進(jìn)行截獲,改變其默認(rèn)的處理函數(shù),從而突破平臺或軟件功能的限制,極大的擴(kuò)展程序的功能;我們還可以修改默認(rèn)的窗體過程,按自己的要求來響應(yīng)消息;或者自定義消息,實現(xiàn)程序之間的即時通訊等等。通過更加深入的學(xué)習(xí),我們還會接觸到更多與Windows消息機(jī)制相關(guān)其它Windows相對比較底層的知識,如果能夠這樣,驀然回首,你會發(fā)現(xiàn)自己原來離“高手”不遠(yuǎn)了。
窗體過程實際上是一個回調(diào)函數(shù)。所謂的回調(diào)函數(shù),實際上就是由Windows操作系統(tǒng)或外部程序調(diào)用的函數(shù)?;卣{(diào)函數(shù)一般都有規(guī)定的參數(shù)格式,以地址方式傳遞給調(diào)用者。窗口過程中是Windows操作系統(tǒng)調(diào)用了,在一個窗口創(chuàng)建的時候,在分配窗體句柄的時候就需要傳入回調(diào)函數(shù)地址。那為什么我們平時編程看不到這個回調(diào)函數(shù)呢?這是由于我們的編程工具已經(jīng)為我們生成了默認(rèn)的窗體過程,這個過程的要做的事情就是判斷不同的消息類型,然后做出不同的處理。例如可以為鍵盤或鼠標(biāo)輸入生成C#事件等。
【編輯推薦】