[C++][WINAPI] Problem z uruchomieniem programu

0

Witam. Przepisałem program z książki: "Visual Studio 2005. Programowanie z Windows API w języku C++." autorstwa Piotra Besty i mam problem z uruchomieniem jego. Poprawnie się builduje ale po uruchomieniu nic się nie pojawia. Proszę o pomoc.

// P L I K I    N A G L O W K O W E
#include <windows.h>

// D E K L A R A C J E
LRESULT CALLBACK ProceduraOkna(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
void WyswietlTekst(HDC hDC, RECT rc);

// W I N M A I N
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	// definiujemy klase okna
	WNDCLASSEX wndclassex;

	wndclassex.cbSize = sizeof(WNDCLASSEX);
	wndclassex.style = CS_VREDRAW | CS_HREDRAW;
	wndclassex.lpfnWndProc = ProceduraOkna;
	wndclassex.cbClsExtra = 0;
	wndclassex.cbWndExtra = 0;
	wndclassex.hInstance = hInstance;
	wndclassex.hIcon = LoadIcon(0, (LPCTSTR)IDI_APPLICATION);
	wndclassex.hCursor = LoadCursor(0, (LPCTSTR)IDC_ARROW);
	wndclassex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclassex.lpszMenuName = 0;
	wndclassex.lpszClassName = "StandardoweOkno";
	wndclassex.hIconSm = LoadIcon(0, (LPCTSTR)IDI_APPLICATION);

	// rejestrujemy klase okna
	RegisterClassEx(&wndclassex);

	// tworzymy okno
	HWND uchwytOkna = 0;

	uchwytOkna = CreateWindowEx(
		0,						// rozszerzony styl
		"StaandardoweOkno",		// nazwa klasy okna
		"Funkcja DrawText",		// tekst okna (wyswietlany na belce)
		WS_OVERLAPPEDWINDOW,	// standardowe style
		100, 100,				// pozycja lewego gornego naroznika
		400, 300,				// szerokosc i wysokosc
		0,						// okno nadrzedne lub rodzic
		0,						// uchwyt menu
		hInstance,				// uchwyt aplikacji
		0);						// dodatkowe dane

	// wyswietlamy i odswiezamy okno
	ShowWindow(uchwytOkna, SW_NORMAL);
	UpdateWindow(uchwytOkna);

	// petla wiadomosci
	MSG msg;
	for (;;)
	{
		if (GetMessage(&msg, 0, 0, 0))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		if (msg.message == WM_QUIT) break;
	}

	return (int)msg.wParam;
}

// D E F I N I C J E    F U N K C J I
LRESULT CALLBACK ProceduraOkna(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc = 0;
	PAINTSTRUCT ps = {0};

	switch(message)
	{
	case WM_CREATE:
		MessageBox(hWnd, "Za moment wyswietle okno!", "informacja", MB_OK | MB_ICONINFORMATION);
		return 0;

	case WM_PAINT:
		InvalidateRect(hWnd, 0, TRUE);
		hdc = BeginPaint(hWnd, &ps);
		WyswietlTekst(hdc, ps.rcPaint);
		EndPaint(hWnd, &ps);
		return 0;

	case WM_CLOSE:
		if (IDYES == MessageBox(hWnd, "Czy anpewno chcesz zamknac okno?", "?", MB_YESNO | MB_ICONQUESTION))
			return DefWindowProc(hWnd, message, wParam, lParam);
		else
			return 0;

	case WM_DESTROY:
		MessageBox(hWnd, "Koniec dzialania programu.", "informacja", MB_OK | MB_ICONINFORMATION);
		PostQuitMessage(0);
		return 0;
	} // koniec switch

	return DefWindowProc(hWnd, message, wParam, lParam);
}

void WyswietlTekst(HDC hdc, RECT rc)
{
	rc.top += rc.bottom / 4;
	DrawText(hdc, "Domyslne ustawienia.", -1, &rc, DT_CENTER);
	rc.top += 25;

	SetBkColor(hdc, RGB(0, 255, 0));
	DrawText(hdc, "Zielone tlo tekstu.", -1, &rc, DT_CENTER);
	rc.top += 25;

	SetBkMode(hdc, TRANSPARENT);
	DrawText(hdc, "Przezroczyste tlo tekstu.", -1, &rc, DT_CENTER);
	rc.top += 25;

	SetBkMode(hdc, OPAQUE);
	SetBkColor(hdc, RGB(0, 0, 0));
	SetTextColor(hdc, RGB(255, 255, 255));
	DrawText(hdc, "Czarne tlo, bialy tekst." , -1, &rc, DT_CENTER);
	rc.top += 25;

	SetTextColor(hdc, RGB(255, 255, 0));
	DrawText(hdc, "Lamany wiersz \n i zolty tekst.", -1, &rc, DT_CENTER);
}
0

Tu masz byka:

        uchwytOkna = CreateWindowEx(
                0,                                                // rozszerzony styl
                "StaandardoweOkno",                // nazwa klasy okna
                "Funkcja DrawText",                // tekst okna (wyswietlany na belce)

"StaandardoweOkno",

0

Wielkie dzieki!

0

Tę pentlę:

        MSG msg;
        for (;;)
        {
                if (GetMessage(&msg, 0, 0, 0))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
                if (msg.message == WM_QUIT) break;
        }

        return (int)msg.wParam;

Zrób tak:

  MSG msgs;
  while(GetMessage(&msgs,0,0,0)) 
  {
    TranslateMessage(&msgs);
    DispatchMessage(&msgs);
}
  return msgs.wParam;