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的事件名稱沒...