DirectUI訊息迴圈的簡單封裝

2021-09-06 12:38:30 字數 1073 閱讀 2735

一.真窗體和假窗體

首先在directwindow內部建立乙個真窗體(基於wtl),可以接收訊息

class cmessagewindow : public cwindowimpl< cmessagewindow >

然後在在handlemessage 處理訊息

二.通過messagedispatcher**訊息

三.組裝給上層比較容易理解的資料結構

這樣上層就捕捉不到wm_lbuttonup訊息,而變成自己封裝的directui_lbuttonup訊息了

全部偽**

class eventarg

;class mouseeventarg:public eventarg

;class messagedispatcher

void dispatcherlbuttonup(point pt,uint ukeyflags,bool *pbhandled)

private:

directwindow *m_pwindow;

};class cmessagewindow : public cwindowimpl< cmessagewindow >

void cmessagewindow::onlbuttonup( hwnd hwnd, int nx, int ny, uint ukeyflags, bool& bhandled )

; ::clienttoscreen(hwnd, &pt);

m_pmessagedispatcher->dispatcherlbuttonup(pt, ukeyflags, &bhandled)

}class ielement;

class directwindow

;

DirectUI的學習隨筆

directui已經不算是新名詞了,可惜很多是閉源的商業庫,根本沒有研究價值。最近,發現乙個叫duilib的介面庫很不錯,關鍵是sdk編寫的,無需mfc支援,crt已經足夠了,我可不想再帶個mfc duilib介面庫基於viksoe的工作並在此基礎上進行大量的改進和bug的修復,也有自己的視覺化設計...

Windows的訊息佇列和訊息迴圈

一 windows中有乙個系統訊息佇列,對於每乙個正在執行的windows應用程式,系統為其建立乙個 訊息佇列 即應用程式佇列,用來存放該程式可能建立的各種視窗的訊息。應用程式中含有一段稱作 訊息迴圈 的 用來從訊息佇列中檢索這些訊息並把它們分發到相應的視窗函式中。二 windows為當前執行的每個...

訊息和訊息處理之訊息迴圈

在win32程式設計中,訊息迴圈是相當重要的乙個概念,看似很難,但使用起來卻是非常簡單。在winmain函式的最後,有下列 while getmessage msg,null,0,0 windows應用程式可以接收以各種形式輸入的資訊,這包括鍵盤 滑鼠動作 計時器產生的訊息,也可以是其他應用程式發來...