WTL FAQ(不断添加中)

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中
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值