一.真窗體和假窗體
首先在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應用程式可以接收以各種形式輸入的資訊,這包括鍵盤 滑鼠動作 計時器產生的訊息,也可以是其他應用程式發來...