Пишу C++-класс для окна, оконная процедура выглядит так:
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
if(uMsg == WM_NCCREATE){
SetWindowLong(hwnd, GWL_USERDATA, (LONG)((LPCREATESTRUCT)lParam)->lpCreateParams);
}
WqWindow *pWindow;
pWindow = (WqWindow *)GetWindowLong(hwnd, GWL_USERDATA);
return pWindow->WndProc(hwnd, uMsg, wParam, lParam);
}
Хочу добавить метод класса, устанавливающий параметры для обработки сообщения WM_GETMINMAXINFO, но оно приходит раньше, чем статическая WindowProc получит возможность узнать указатель на объект, переменные которого надо запихать в MINMAXINFO, т.е. раньше WM_NCCREATE.
Как мне это сделать?
Пока мой вариант выглядит так: перед CreateWindowEx помещать переменные, нужные для обработки WM_GETMINMAXINFO, в глобальную структуру, а в WindowProc из этой глобальной структуры извлекать. А чтобы кто-нибудь из другого треда не поменял эту глобальную структуру, обернуть ее заполнение и CreateWindowEx в критическую секцию. Но мне кажется, что это криво.