【问题标题】:C++ WTL: Deriving from CListBoxC++ WTL:从 CListBox 派生
【发布时间】:2013-10-18 15:47:03
【问题描述】:

我正在尝试创建一个自定义 CListBox 派生类。我无法弄清楚如何正确设置消息映射。这是我正在使用的当前代码:

template <class T>
class CHScrollListBoxT : public CWindowImpl<CHScrollListBoxT<T> , CListBox>
{
public:
    BEGIN_MSG_MAP(CHScrollListBoxT< T >)
        MESSAGE_HANDLER(LB_ADDSTRING, OnAddString)
        MESSAGE_HANDLER(LB_INSERTSTRING, OnInsertString)
        MESSAGE_HANDLER(LB_DELETESTRING, OnDeleteString)
        MESSAGE_HANDLER(LB_DIR, OnDir)
        MESSAGE_HANDLER(LB_RESETCONTENT, OnResetContent)
    END_MSG_MAP()

    ...

我遇到的问题是如何将其余的窗口消息路由回基本 CListBox 类(换句话说,对我未在消息映射中指定的任何窗口消息进行默认处理)。我不想为 CListBox 重写每个适用的消息处理程序。我试过了:

CHAIN_MSG_MAP(CWindowImpl<CHScrollListBoxT<T>, CListBox>

但它不会编译。

【问题讨论】:

    标签: c++ wtl


    【解决方案1】:

    您没有指定编译器错误,但据推测问题在于您提供的宏参数带有嵌入的空格和逗号。您可以通过这种方式解决它:

    typedef CWindowImpl<CHScrollListBoxT<T>, CListBox> CBaseWindow;
    CHAIN_MSG_MAP(CBaseWindow)
    

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      相关资源
      最近更新 更多