摘要:思路: 前提快捷鍵操作不可重復(fù),即一個快捷鍵對應(yīng)一個控件的動作 一個窗體保持一份快捷鍵的map映射 在相應(yīng)的消息中獲取快捷鍵列表如鍵盤消息 在控件類對象中定義一個默認(rèn)的響應(yīng)行為,比如Button按了Enter鍵 當(dāng)子控件隱藏,父控件關(guān)系發(fā)生變化時則重新設(shè)置快捷鍵 閱讀全文
Menu實現(xiàn)邏輯
2013-11-21 22:20 by Clingingboy, 386 閱讀, 0 推薦, 收藏,
摘要:一.前奏 創(chuàng)建一個WS_EX_NOACTIVATE的窗體 創(chuàng)建窗體后注冊Hook消息(鼠標(biāo)在非Menu區(qū)域點擊時關(guān)閉menu,接收鍵盤消息用于快捷鍵,接WM_SETFOCUS消息,當(dāng)打開新窗體時關(guān)閉menu) 接LButtonClick(在LButtonUp觸發(fā))消息,按下按鈕后關(guān)閉menu 二.Menu快捷鍵邏輯 采納從Enter鍵之后的快捷鍵+自定義... 閱讀全文
控件保持多種繪圖狀態(tài)的做法
2013-11-21 15:03 by Clingingboy, 350 閱讀, 0 推薦, 收藏,
摘要:基本思路 #pragma once#include struct IPainter{ void Paint() {}};class Element{ void SetPainterState(int dwState, IPainter* pPainter) { m_mapStatePainter[dwState]=pPainter; if(dw... 閱讀全文
2個函數(shù)宏技巧
2013-11-21 13:56 by Clingingboy, 580 閱讀, 0 推薦, 收藏,
摘要:1.用宏調(diào)用對象函數(shù) #define FOR_EACH_OBSERVER(ObserverType, observer_list, func) \ do{ \ CObserverListBase::Iterator it(observer_list); \ ObserverType* obs; \ while((obs=it.GetNext()) != ... 閱讀全文
繪圖 Painter轉(zhuǎn)接口封裝的方式
2013-11-21 11:52 by Clingingboy, 375 閱讀, 0 推薦, 收藏,
摘要:記錄下思想 適用于業(yè)務(wù)邏輯相對單純的一些畫法,比如畫背景(顏色,背景,邊框等) 一個Draw方法中如果繪制比較復(fù)雜的話,就會導(dǎo)致代碼混亂,而不靈活,每次需求更改就得重新畫過,可重用性差. 以接口的方式可以很好的重復(fù)利用功能,不必因為需求的更改而大量變更代碼 chrome的方法定義如下 // Painting ----------------------------------... 閱讀全文
DirectUI消息循環(huán)的簡單封裝
2013-11-09 13:56 by Clingingboy, 1142 閱讀, 0 推薦, 收藏,
摘要:一.真窗體和假窗體 首先在DirectWindow內(nèi)部創(chuàng)建一個真窗體(基于WTL),可以接收消息 class CMessageWindow : public CWindowImpl{public: CMessageWindow(); ~CMessageWindow(); BEGIN_MSG_MAP( CMessageWindow ) MESSAGE_RAN... 閱讀全文
c++以代理的方式來實現(xiàn)接口化編程
2013-11-05 14:13 by Clingingboy, 1040 閱讀, 0 推薦, 收藏,
摘要:假如你項目代碼本身已經(jīng)實現(xiàn)了很多的實體類,但并未采用接口,可以考慮以這種方式來實現(xiàn)接口化編程 struct ITest{ virtual void Test()=0;};class CTest{public: void Test() {}};class CTestProxy:public ITest{ void Test() { m_object... 閱讀全文
c++對象工廠
2013-11-04 23:07 by Clingingboy, 2238 閱讀, 0 推薦, 收藏,
摘要:一.簡單工廠 #pragma oncestruct IObjectA{ virtual void Test1()=0;};class ObjectA:public IObjectA{public: virtual void Test1(){}};struct IObjectB{ virtual void Test2()=0;};class ObjectB:public I... 閱讀全文
使用模板來解決接口繼承問題
2013-11-04 20:14 by Clingingboy, 529 閱讀, 0 推薦, 收藏,
摘要:一.定義2個有繼承關(guān)系的接口 struct IA{ virtual void Test1()=0;};struct IB:public IA{ virtual void Test2()=0;};二.定義2個類來實現(xiàn)class A:public IA{ virtual void Test1() {}};class B:public IB{public: virtual... 閱讀全文
VC++ 使用attributes定義接口
2013-11-04 19:26 by Clingingboy, 885 閱讀, 0 推薦, 收藏,
摘要:1.定義預(yù)處理命令_ATL_ATTRIBUTES 2.在一個全局的Cpp文件里面配置module的attribute [module(dll, uuid = "{3845951F-15B8-4286-8E7D-E9D4F5C7B6CE}", name = "TestApp")]3.定義接口[ object, uuid("9F414A8A-1D5E-4aff-A60... 閱讀全文
浙公網(wǎng)安備 33010602011771號