WM_GETMINMAXINFO wird vor WM_NCCREATE gesendet
-
hola leute
ist es normal das WM_GETMINMAXINFO vor WM_NCCREATE gesendet wird ?
ich habe mir eine kleine helper klasse zum erstellen von fenstern geschrieben.
die WinProc sieht dabei so aus:window *win; LPCREATESTRUCT pcs; static int nccreate = 0; // zum testen switch(message) { case WM_NCCREATE: ++nccreate; pcs = (LPCREATESTRUCT)lparam; win = reinterpret_cast<window*>(pcs->lpCreateParams); ::SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<ULONG>(win)); return win->window_proc(hwnd, message, wparam, lparam); default: win = reinterpret_cast<window*>(static_cast<LONG_PTR>(::GetWindowLongPtr(hwnd, GWLP_USERDATA))); return win->window_proc(hwnd, message, wparam, lparam); }wenn ich nun vor dem erstellen des hauptfensters eine MessageBox anzeigen lasse, bekomm ich immer eine fehlermeldung nach dem beeden (Eine Ausnahme (erste Chance) bei 0x...) in der debugger ausgabe angezeigt.
ohne der messagebox jedoch nicht.
hab dann mal mit dem debugger nachgesehen wo die her kommt.
so fand ich heraus, das WM_GETMINMAXINFO vor WM_NCCREATE gesendet wird.
zu diesem zeitpunkt ist aber dann die varaible 'win' noch null.wie beheb ich nun den fehler und weshalb kommt das nur in verbindung mit der messagebox ?
Meep Meep
-
Ruf einfach die DefWindowProc statt win->window_proc auf, solange win noch null ist...
-
WM_GETMINMAXINFO ist die erste Nachricht die gesendet wird. Das ist normal.
Die Lösung hast Du auch schon gesagt bekommt: DefWindowProc aufrufen!
-
danke
Meep Meep