Dostęp do parametrów WndProc

0

Próbuję stworzyć najprostsze okno w WinAPI.
Problem wydaje się banalny, ale coś nie działa tak jak powinno.
WNDCLASSEX jest rejestrowana poprawnie, system wywołuje moją funkcję wndproc. I w tej procedurze muszę jakoś dostać się do jej parametrów (HWND, MSG, WPARAM, LPARAM). Ale z tego co oglądam w debugerze to na stosie tych parametrów nie ma, albo są gdzieś indziej niż być powinny.

wndproc:
	 pop eax
	 pop ebx
	 pop ecx
	 pop edx
         ; w tych rejestrach pojawiają się śmieci. ani śladu parametrów
        
	ret

Jak się do nich dostać?

0

Nie może ich 'nie być'. Chyba że coś pomyliłeś i to jednak nie wndproc.

Przede wszystkim na szczycie stosu siedzi adres powrotu z funkcji - jeśli ten kod nie wywala Ci programu to powinieneś odbyć pielgrzymkę do Częstochowy i dziękować za cud...

Poza tym wszystko normalnie, ale polecam lekturę: http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames


Edit: Prosty kod dla WndProc:

LRESULT WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
	switch(message)	{
		case WM_DESTROY: {  PostQuitMessage(0); break; }
		default: { return DefWindowProc(hWnd, message, wParam, lParam); }
	}
}

Wynik przepuszczenia tego przez gcc:
wndproc.png

0

Daleka droga przede mną do ogarnięcia, ale udało się.
Twoja grafika dużo mi pomogła, te parametry cały czas były na stosie, ale ja nie wiedziałem jak ich szukać.
Pojawiło się moje długo wyczekiwane okienko :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1