Re[2]: WTL - Обработка сообщений контрола
От: SpeCT Россия  
Дата: 11.03.04 10:02
Оценка:
Здравствуйте, Виталий, Вы писали:

В>Здравствуйте, SpeCT, Вы писали:


SCT>>У меня есть окно, простое такое окошко. На нём есть ListView (на самом деле их там не известно сколько). Как мне обработать сообщение (мне нужно WM_VSCROLL, но это не играет роли), приходящее этому ListView? Сейчас код имеет примерно такой вид:


В>Для каждого ListView при создании можно установаить его собственный ID

В>

В>Create(HWND hWndParent, _U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
В> DWORD dwStyle = 0, DWORD dwExStyle = 0,
В> _U_MENUorID MenuOrID = 0U, LPVOID lpCreateParam = NULL)

В>Потом при обработке сообщения просто этот ID получать — ListView.GetWindowLong(GWL_ID) и будет Счастье :)

Я так и не понял что даёт мне этот ID? Пока что сообщения у меня может принимать только главное окно. Как обработать сообщения ListView я не понял. Пробовал так:
class CVariableList : public CWindowImpl<CVariableList, CListViewCtrl>
{
private:
    BEGIN_MSG_MAP(CVariableList)
        MESSAGE_HANDLER (WM_VSCROLL, OnScroll)
    END_MSG_MAP()
}


Но приложение вылетает сразу же.
ЗЫ: Главное окно выглядит так:
class CMainWnd : public CWindowImpl<CMainWnd, CWindow, CFrameWinTraits>
{
private:
    std::vector<CVariableList> m_listViews;    

private:    
    BEGIN_MSG_MAP(CMainWnd)
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
        MESSAGE_HANDLER (WM_SIZE, OnSize)
        
        MESSAGE_HANDLER (WM_DRAWITEM, OnDrawItem)

        REFLECT_NOTIFICATIONS()
    END_MSG_MAP()
}


Как мне ЭТО изменить так, чтобы заработало?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.