04 2011 檔案
摘要: 這次我們將要給Widget增加一些狀態,并使其能夠接受出消息處理擴展,測試工程中實現了一個按鈕的消息處理擴展。 當然,這次的內容非常多,包括坐標映射、區域映射,捕獲鼠標的控件、活動控件、焦點控件等概念都未提到,但在代碼中還是能夠看到這些概念的。如果一一介紹,那文章就會非常冗長,也會使Widget實現進展緩慢,因此我通常都會省略一些內容,這些內容也就只能通過代碼閱讀來得到了。
閱讀全文
摘要: 模擬控件項目已經進行到一定的程度了,我們得給它來個重構,修改部分BUG且讓它更合理一些。這次重構我們產生了新的概念,也刪除了一些老的概念;有新的類產生,也有老的類消亡;有解耦,也有融合。
閱讀全文
摘要: Widget即將具備可擴展性,我們抽象了一個叫做“對象關系”的概念來輔助Widget擴展。我們將Widget的子控件布局作為一個可擴展點,并建立了一個“邊緣式布局子控件”用于測試。
閱讀全文
摘要: 控件體系基本雛形已經形成,首次能夠直觀的看到我們控件了。控件樹、控件區域、控件繪制,這些就是這次的內容。
閱讀全文
摘要: 既然有些實現對于用戶來說是透明的,那么我們就將他們隱藏。這里提出了兩種方案,我們進行了對比并選擇了其中一種方案來執行,隱藏一些類之后我們便可以簡化之前的生命周期依賴了——即通過暴露在外的對象來管理被隱藏的實現對象,這樣減少了對象之間的交叉管理。
閱讀全文
摘要: 我們最終要實現的是Widget,驅動、過濾器等等都是它的必要實現,但這和用戶毫無關系。窗口、驅動、根控件之間有著一一對應的關系,那么他們的生命周期也是相互依賴的,看這里如何管理他們的生命周期。
閱讀全文
摘要: thunk已經準備就緒,我們可以開始實現控件驅動了。驅動的職責很簡單,負責關聯容器窗口并將消息交由過濾器處理。在測試工程代碼中,我們可以在調試的輸出視圖中看到容器窗口消息流入消息過濾器的情況。
閱讀全文
摘要: 抽象控件需要由消息來驅動,那么我們就必須要截獲其容器窗口的消息。這次的內容就是通過thunk來子類化容器窗口以截獲其消息。
閱讀全文
摘要: 整個系列是通過一步一步的分析和設計,最終實現一套windows窗口中抽象模擬控件的內核。對抽象模擬控件和概述及其消息驅動的設計便是這次的內容。
閱讀全文