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);
}