2013-10-10 1 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 (другими словами, сделать обработку по умолчанию для любых сообщений окна I не указывайте в карте сообщений). Я не хочу переопределять каждый применимый обработчик сообщений для CListBox. Я пробовал:

CHAIN_MSG_MAP(CWindowImpl<CHScrollListBoxT<T>, CListBox> 

Но он не компилируется.

ответ

1

Вы не указали ошибку компилятора, но, предположительно, проблема заключается в том, что вы предоставляете аргумент макроса вложенным пространствам и запятым. Вы можете работать по этому пути:

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

 Смежные вопросы

  • Нет связанных вопросов^_^