Jag har gjort ett första försök att göra en windows ruta genom att använda win 32 api:t. Mitt problem är att rutan bara blinkar fram och sen genast försvinner. Borde vara nåt fel med min (väldigt standard) msg handler eller med min message loop, eller?
Så här ser i alla fall dessa två ut:
Messageloop:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Message Handler:
LRESULT CALLBACK MsgHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
return(DefWindowProc(hwnd, msg, wparam, lparam));
}
Tack på förhand!
nikoMedlem sedan juni 20022 599 inlägg Det verkar ju vara ganska "by the book" så det är svårt att se att fönstret skulle försvinna pga den koden.
Sätt en break-point tidigt i WinMain och steppa framåt så ser du antagligen att det smäller redan innan.
PeWMedlem sedan juni 200010 432 inlägg En breakpoint sätts där man vill att programmet ska stanna upp när man kör debug. Då får man tillfälle att t.ex kolla variablers värden, stacken m.m.. men ofta kan det ju räcka med att man placerar ut lite brytpunkter strategiskt för att se hur långt in i programmet felet uppstår. Kolla i hjälpen på ditt IDE så bör det framgå hur du ska göra i just den miljön.
Man måste hantera WM_CREATE, dvs returnera noll för att fönstret skall skapas.
nikoMedlem sedan juni 20022 599 inlägg Sang-drax:
Han hanterar redan WM_CREATE via DefWindowProc.
Ja, det stämmer. Efter en kontroll ser jag att DefWindowProc returnerar 0 för WM_CREATE.
I övrigt ser jag inget fel med koden. En titt på koden som skapar fönstret skulle kanske inte skada.
Genom att använda debuggern så vet jag nu alldeles säkert att rutan skapas. Har inte lyckats så bra med debuggern annars än, får läsa på litet för att se hur den funkar bättre.
Det är mycket kod (med kommentarerna iaf som skapar detta enkla fönster, därför föredrar jag att utelämna den.