C ++ WTL:从CListBox派生

时间:2013-10-10 18:21:46

标签: c++ wtl

我正在尝试创建自定义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>

但它没有编译。

1 个答案:

答案 0 :(得分:1)

您没有指定编译器错误,但据说问题是您提供带有嵌入空格和逗号的宏参数。你可以这样做:

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