Mam prosty programik w WinAPI, który przed wyłączeniem ma zapytać, czy użytkownik na pewno chce zakończyć pracę.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
HWND okno_glowne_hWnd;
HINSTANCE hInst;
LRESULT CALLBACK WindowEventProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
if (MessageBox(hWnd, "Wyjść z programu?", "Zamykanie...", MB_YESNO | MB_ICONQUESTION) == 6)
{
DestroyWindow(okno_glowne_hWnd);
PostQuitMessage(0);
return 0;
}
else
return 0;
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASSEX okno_glowne;
ZeroMemory(&okno_glowne, sizeof(okno_glowne));
okno_glowne.cbSize = sizeof(okno_glowne);
okno_glowne.hInstance = hInstance;
okno_glowne.lpfnWndProc = WindowEventProc;
okno_glowne.lpszClassName = "okno_glowne";
okno_glowne.hIcon = LoadIcon(0, IDI_APPLICATION);
okno_glowne.hCursor = LoadCursor(0, IDC_ARROW);
okno_glowne.hbrBackground = (HBRUSH) COLOR_WINDOW;
RegisterClassEx(&okno_glowne);
okno_glowne_hWnd = CreateWindowEx(0, "okno_glowne", "Okno", WS_OVERLAPPEDWINDOW, 10, 10, 40, 80, 0, 0, hInstance, 0);
ShowWindow(okno_glowne_hWnd, nShowCmd);
MSG komunikaty;
while(GetMessage(&komunikaty, 0, 0, 0))
{
TranslateMessage(&komunikaty);
DispatchMessage(&komunikaty);
}
return static_cast<int>(komunikaty.wParam);
}
Co zrobić, aby program zadziałał poprawnie?