Прошу помощи у знающих людей.
У меня есть окно, простое такое окошко. На нём есть ListView (на самом деле их там не известно сколько). Как мне обработать сообщение (мне нужно WM_VSCROLL, но это не играет роли), приходящее этому ListView? Сейчас код имеет примерно такой вид:
class CVariableList : public CListViewCtrl
{
//<...>
}
class CMainWnd : public CWindowImpl<CMainWnd, CWindow, CFrameWinTraits>
{
//<...>
std::vector<CVariableList> m_listViews; // вот этим листам приходит сообщение, как мне его обработать?
//<...>
}
Здравствуйте, SpeCT, Вы писали:
SCT>У меня есть окно, простое такое окошко. На нём есть ListView (на самом деле их там не известно сколько). Как мне обработать сообщение (мне нужно WM_VSCROLL, но это не играет роли), приходящее этому ListView? Сейчас код имеет примерно такой вид:
SCT>[skip]
SCT>
Для каждого 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) и будет Счастье
Здравствуйте, Виталий, Вы писали:
В>Здравствуйте, 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()
}
Как мне ЭТО изменить так, чтобы заработало?
SCT>Но приложение вылетает сразу же.
SCT>ЗЫ: Главное окно выглядит так:
SCT>SCT><skip>
SCT>
SCT>Как мне ЭТО изменить так, чтобы заработало?
ВОПРОС Снят. :super: Я дурень! Вместо
private:
std::vector<CVariableList> m_listViews;
Надо заводить
private:
std::vector<CVariableList*> m_listViews;
Во дурак... Ж)