webForumDet fria alternativet

WIN 32 API Ruta

C/C++

7 svar · 363 visningar · startad av Napoleon

Medlem sedan nov. 200322 inlägg
Frågan#1

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!

Medlem sedan juni 20022 599 inlägg
#2

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.

Medlem sedan nov. 200322 inlägg
#3

Break-point?

Vad är en Break-point?

Medlem sedan juni 200010 432 inlägg
#4

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.

Medlem sedan juli 2002581 inlägg
#5

Man måste hantera WM_CREATE, dvs returnera noll för att fönstret skall skapas.

Medlem sedan juni 20022 599 inlägg
#6

Sang-drax:

Han hanterar redan WM_CREATE via DefWindowProc.

Medlem sedan juli 2002581 inlägg
#7

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.

Medlem sedan nov. 200322 inlägg
#8

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.

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)