Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;WTL:从CListBox派生_C++_Wtl - Fatal编程技术网

C++ C++;WTL:从CListBox派生

C++ C++;WTL:从CListBox派生,c++,wtl,C++,Wtl,我正在尝试创建一个自定义CListBox派生类。我不知道如何正确设置消息映射。这是我正在使用的当前代码: template <class T> class CHScrollListBoxT : public CWindowImpl<CHScrollListBoxT<T> , CListBox> { public: BEGIN_MSG_MAP(CHScrollListBoxT< T >) MESSAGE_HANDLER(LB_

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

    ...
模板
CHScrollListBoxT类:公共CWindowImpl
{
公众:
开始消息映射(CHScrollListBoxT)
消息处理程序(LB_ADDSTRING、OnAddString)
消息处理程序(LB_INSERTSTRING、OnInsertString)
消息处理程序(LB_DELETESTRING、OnDeleteString)
消息处理程序(LB_DIR,OnDir)
消息处理程序(LB_RESETCONTENT、OnResetContent)
END_MSG_MAP()
...
我遇到的问题是如何将其余窗口消息路由回基本CListBox类(换句话说,对消息映射中未指定的任何窗口消息进行默认处理)。我不想覆盖CListBox的所有适用消息处理程序。我尝试了:

CHAIN_MSG_MAP(CWindowImpl<CHScrollListBoxT<T>, CListBox>
CHAIN\u MSG\u MAP(CWindowImpl)

但它不会编译。

您没有指定编译器错误,但问题可能是您提供的宏参数中嵌入了空格和逗号。您可以通过以下方式解决此问题:

typedef CWindowImpl<CHScrollListBoxT<T>, CListBox> CBaseWindow;
CHAIN_MSG_MAP(CBaseWindow)
typedef CWindowImpl cbase窗口;
链图(CBASE窗口)