Witam uprzejmie!
Za pomocą Dev C++ wygenerowałem programik wyświetlający puste okno Windowsowe. Następnie, w oparciu o kurs http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Podstawy-WinAPI/168 umieściłem deklarację globalnego uchwytu (przed funkcją WinMain )
HWND g_hPrzycisk;
a następnie - wewnątrz WinMain , zaraz po instrukcji tworzącej okienko główne - wstawiłem kod
g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE,100, 100, 150, 30, hwnd, NULL, hInstance, NULL );
. Spowodowało to wyświetlenie w oknie żądanego przycisku. Następnie dodałem (tuż poniżej poprzedniego) kod:
case WM_COMMAND:
if(( HWND ) lParam == g_hPrzycisk )
MessageBox( hwnd, "Nacisnąłeś przycisk!", "Ha!", MB_ICONINFORMATION );
break;
który - według wspomnianego kursu - powinien spowodować reakcję na “naciśnięcie” przycisku. Niestety - przy próbie kompilacji wskazywany jest błąd w pierwszej linii powyższego kodu. Zaznaczam, że to moje pierwsze nieśmiałe kroki w próbie programowania i wykonuję je metodą prób i błędów - dlatego osoby chcące ewentualnie poświęcić mi nieco swojego cennego czasu proszę o możliwie “łopatologiczną” pomoc. Poniżej daję jeszcze większe fragmenty mojego “programu” żeby uwidocznić gdzie co dopisałem.
#include 
/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
	switch(Message) {
		/* trap the WM_CLOSE (clicking X) message, and actually tell the window to close */
		case WM_CLOSE: {
			DestroyWindow(hwnd);
			break;
		}
		/* Upon destruction, tell the main thread to stop */
		case WM_DESTROY: {
			PostQuitMessage(0);
			break;
		}
		/* All other messages (a lot of them) are processed using default procedures */
		default:
			return DefWindowProc(hwnd, Message, wParam, lParam);
	}
	return 0;
}
	HWND g_hPrzycisk;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	WNDCLASSEX wc; /* A properties struct of our window */
	HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
	MSG Msg; /* A temporary location for all messages */
	/* zero out the struct and set the stuff we want to modify */
	memset(&wc,0,sizeof(wc));
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.lpfnWndProc = WndProc; /* This is where we will send messages to */
	wc.hInstance = hInstance;
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	/* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszClassName = "WindowClass";
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
	wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
	if(!RegisterClassEx(&wc)) {
		MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}
	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Jacek - ćwiczenie pierwsze",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, /* x */
		CW_USEDEFAULT, /* y */
		650, /* width */
		480, /* height */
		NULL,NULL,hInstance,NULL);
	g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Kontrolka pierwsza", WS_CHILD | WS_VISIBLE,
	5, 5, 150, 30, hwnd, NULL, hInstance, NULL );
	case WM_COMMAND:
if(( HWND ) lParam == g_hPrzycisk )
     MessageBox( hwnd, "Nacisnąłeś przycisk!", "Ha!", MB_ICONINFORMATION );
break;
