看板 Programming 關於我們 聯絡資訊
※ 引述《afz096 (我被淡水的路寵壞了)》之銘言: : 用穿透這字眼無法確切的形容 : 將問題詳述如下 : 一個視窗上面有其他的物件, : 而這些物件幾乎將整個視窗佔滿。 : 而當我滑鼠在視窗上 click 或是拖曳時, : 這些 event 會被視窗上面的物件擷取, : 而我希望這些 event 可以直接傳給視窗。 : 圖示說明如下 : ┌─────────┐ : │視窗 a │ : │ ┌──────┐ │ : │ │ 物件一 │ │ : │ └──────┘ │ : │ ┌──────┐ │ : │ │ 物件二 b │ │ : │ └──────┘ │ : └─────────┘ : 當滑鼠在 a 點 press,在 b 點 release, : a 點 press 的 event 會被視窗擷取, : b 點 release 的 event 會被物件二擷取, : 想知道有甚麼樣的方式,可以讓物件二所擷取的 event 可以傳給視窗。 : 兩個想法如下: : 第一個是當視窗內的物件產生的時候,順便將視窗的 reference 傳進去, : 所以物件接受到 event 時,可以藉由 reference 交給視窗解決。 : 可是這樣的缺點是,當視窗內的物件越多,reference 會越多,記憶體使用效率並不好。 : 另一個想法是,在所有的物件最上層,建立一個完全透明的物件, : 而所有的滑鼠的 event 都由最上層透明的物件接收, : 在根據 event 觸發的座標,交給視窗或是相對應的物件來處理。 : 不過這樣要處理好 z 軸的順序,以及物件的透明度,而這是我的問題所在。 : 不知是否還有其他的解法,還請各位指教。 以下純印象, 有錯請指正 如果我記得沒錯的話, 最外層的視窗 和 物件二 都可以註冊 MessageMap 只要在 物件二 的 Message Handler 不處理此 event... event 自動就會往父容器...也就是 最外層視窗 丟... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.113.30
WPC001:Win SDK裡頭, 並不是註冊MessageMap 123.195.0.144 02/13 01:08
WPC001:是Message Loop要處理,不是自己的要往外丟 123.195.0.144 02/13 01:09