VC的事件模型

2021-04-01 06:58:03 字數 1162 閱讀 9314

vc

的事件模型

所有的視窗在作業系統中都以乙個資料結構維護著,這個資料結構就是預先註冊的視窗類,乙個視窗類可以有多個例項,這個視窗類有乙個重要的成員:對應的視窗事件處理函式的位址。

在mfc

中,所有視窗的這個函式位址都被註冊成為

afxwndproc

(),這個全域性函式會根據視窗控制代碼查詢到對應的

cwnd

物件。然後呼叫

afxwndcallproc

(),調這個函式的作用是為了把這個訊息儲存下來備用(為了後面

defwinproc

()用)然後就呼叫

cwnd

物件的windowproc

()函式(從此時開始的所有函式可以

overwrite

),windowproc

()函式會呼叫

onwndmsg

()來處理訊息,要是

onwndmsg

()沒有處理訊息,它會呼叫

defwinproc

()來處理(此處的包裝使得好像是

cwnd

的windowproc

()是註冊的訊息處理函式),

onwndmsg

()函式會判斷訊息的型別,如果是乙個

on***mand

訊息,它會呼叫

on***mand

()函式來處理,如果是

onnotify

訊息,它會呼叫

onnotify

()函式來處理,這兩個函式都會先試著把訊息對映回控制項類(

cbutton

如果有的話),如果控制項類不處理這個訊息,那麼因為這個訊息已經是命令訊息,不是視窗訊息,已經不是專屬於視窗來管了。它就呼叫

ccmdtarget

類的oncmdmsg

()函式來處理(當然視窗也可以處理),

oncmdmsg

()函式會查詢訊息對映或者進行訊息傳遞。所有沒有被傳入

on***mand

或onnotify

的都被認為是視窗訊息,直接在本

cwnd

的訊息對映中查詢訊息處理函式,要是找不到就返回

windwoproc

()讓defwinproc

()來處理它。

標準事件模型和IE事件模型

在瀏覽器解析事件的時候,有兩種觸發方式,一種叫做bubbling 冒泡 另外一種叫做capturing 捕獲 這裡不做過多解釋 這裡分析三種繫結事件模式 1 traditional module 傳統方式的事件模型即直接在dom元素上繫結事件處理器,例如 window.onload function...

VC 滑鼠事件的響應

滑鼠鍵包括左鍵 右鍵和中鍵 滾輪 每個鍵都有三種事件訊息,一是被按下,二是被釋放,三是雙擊。下表列出了滑鼠操作 訊息名稱及處理函式名。滑鼠操作 訊息名稱 處理函式名 左鍵按下 wm lbuttondown onlbuttondown 左鍵釋放 wm lbuttonup onlbuttonup 左鍵雙...

事件(二) Jquery事件模型

與w3c標準事件api十分相似,除了名稱上的不同以外,唯一差別就是去掉了usecapture引數,並且去掉了事件名稱中的on字首。示例 如下 document bind ready function div bind mouseout function 與傳統的時間模型不同,jquery的事件名稱沒...