2013-10-10 23 views
-1

我想創建一個自定義CListBox派生類。我無法正確理解如何設置消息映射。這是當前代碼我使用: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

您沒有指定編譯器錯誤,但推測問題是您正在提供帶有嵌入空格和逗號的宏參數。你可以這樣工作:

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