WTL FAQ(不斷添加中)

來源:互聯網
上載者:User

FAQ1: 如果你用WTL7.5和VC6.0/ATL3.0,並且定義了_ATL_STATIC_REGISTRY。在編譯時間你會
 得到提示“ambiguous symbol ATL”的錯誤。因為定義_ATL_STATIC_REGISTRY將使
 atlbase.h檔案內包含statreg.h檔案。而statreg.h檔案內聲明了另一個ATL名字空間
 造成衝突。要解決此問題可以把
 #include <atlbase.h> 
 改為
 #define ATL ATLFIX
 #include <atlbase.h>
 #undef ATL
 namespace ATL = ::ATLFIX;

FAQ2: 如何讓一個模板類來處理某一類視窗訊息
 例,class CACComboBox : public CWindowImpl<CACComboBox,CComboBox>
 CACComboBox是一個組合框模板類,現在設計另一模板類專門處理組合框的WM_PAINT訊息
 這樣做的好處有利於控制項的介面由類來組合,卸換。
 步驟:
1、 聲明一模板類,必須派生自CmessageMap,可以由模板類參數來決定介面的效果
如:template <class T, COLORREF t_crFrameolor = RGB(172,168,153) , UINT t_uType = 1>
class CComboBoxFrameT : public CmessageMap
t_crFrameColor是組合框邊框顏色,t_utype是組合框皮膚的效果

2、 聲明BEGIN_MSG_MAP/ END_MSG_MAP()宏
3、 宏內添加MSG_WM_PAINT( OnPaint )宏處理WM_PAINT訊息
4、 聲明定義訊息處理函數:OnPaint
5、 視窗類別中派生項添加:public CComboBoxFrameT<CACComboBox>
6、 在視窗類別中添加CHAIN_MSG_MAP(CComboBoxFrameT<CACComboBox>)宏,包含CcomboBoxFrame
的訊息處理。
7、 CcomboBoxFrameT內中要使用視窗類別時:T* pT = static_cast<T*>(this);

FAQ3: 控制項如何使用訊息反射
 步驟:
1、 在能收到通知訊息的視窗的訊息宏中添加REFLECT_NOTIFICATIONS(),視窗就會把沒處理的
的通知訊息反射給控制項。
2、 在控制項的訊息宏或訊息鏈中添加 REFLECTED_COMMAND_CODE_HANDLER_EX等列系宏,
該類宏還有REFLECTED_NOTIFY_HANDLER_EX,REFLECTED_NOTIFY_ID_HANDLER_EX,
REFLECTED_NOTIFY_CODE_HANDLER_EX,等多個宏,定義在atlcrack.h中
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.