Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h> // підключення бібліотеки з функціями API
- #include "resource.h"
- // Глобальні змінні:
- HINSTANCE hInst; //Дескриптор програми
- LPCTSTR szWindowClass = "Kravchenko";
- LPCTSTR szTitle = "Nazar Kravchenko";
- // Попередній опис функцій
- ATOM MyRegisterClass(HINSTANCE hInstance);
- BOOL InitInstance(HINSTANCE, int);
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- // Основна програма
- int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- MSG msg;
- // Реєстрація класу вікна
- MyRegisterClass(hInstance);
- // Створення вікна програми
- if (!InitInstance(hInstance, nCmdShow))
- {
- return FALSE;
- }
- // Цикл обробки повідомлень
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
- ATOM MyRegisterClass(HINSTANCE hInstance)
- {
- WNDCLASSEX wcex;
- wcex.cbSize = sizeof(WNDCLASSEX);
- wcex.style = CS_VREDRAW | CS_DBLCLKS; //стиль вікна
- wcex.lpfnWndProc = (WNDPROC)WndProc; //віконна процедура
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance; //дескриптор програми
- wcex.hIcon = LoadIcon(NULL, IDI_INFORMATION); //визначення іконки
- wcex.hCursor = LoadCursor(NULL, IDC_NO ); //визначення курсору
- wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //установка фону
- wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); //визначення меню
- wcex.lpszClassName = szWindowClass; //ім’я класу
- wcex.hIconSm = NULL;
- return RegisterClassEx(&wcex); //реєстрація класу вікна
- }
- BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
- {
- HWND hWnd;
- hInst = hInstance; //зберігає дескриптор додатка в змінній hInst
- hWnd = CreateWindow(szWindowClass, // ім’я класу вікна
- szTitle, // назва програми
- WS_OVERLAPPEDWINDOW, // стиль вікна
- NULL, // положення по Х
- 0, // положення по Y
- 400, // розмір по Х
- 500, // розмір по Y
- NULL, // дескриптор батьківського вікна
- NULL, // дескриптор меню вікна
- hInstance, // дескриптор програми
- NULL); // параметри створення.
- if (!hWnd) //Якщо вікно не творилось, функція повертає FALSE
- {
- return FALSE;
- }
- ShowWindow(hWnd, SW_SHOWMINIMIZED); //Показати вікно
- UpdateWindow(hWnd); //Оновити вікно
- return TRUE;
- }
- int CALLBACK DlgPloc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message)
- {
- case WM_INITDIALOG: //ініціалізація функціоналу керування діалоговим вікном
- return TRUE;
- //цикл обробки натискання елементів на формі діалогового вікна
- case WM_COMMAND:
- if (LOWORD(wParam) == ID_ABOUT_2)
- {
- MessageBox(hDlg, "e-mail:\tnazar.kravchenko@nure.ua", "Додаткова інформація", MB_OK);
- }
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, LOWORD(wParam));//знищення модального діалогового вікна
- return TRUE;
- }
- break;
- }
- return FALSE;
- }
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- PAINTSTRUCT ps;
- HDC hdc;
- RECT rt;
- int result;
- char buffer[100];
- switch (message)
- {
- case WM_CREATE: //Повідомлення приходить при створенні вік-на
- break;
- case WM_PAINT: //Перемалювати вікно
- hdc = BeginPaint(hWnd, &ps); //Почати графічний вивід
- GetClientRect(hWnd, &rt); //Область вікна для малювання
- DrawText(hdc, "Привіт, світ!", -1, &rt, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
- EndPaint(hWnd, &ps); //Закінчити графічний вивід
- break;
- case WM_CLOSE: //Завершення роботи
- result = DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG2), hWnd, DlgPloc);
- switch (result)
- {
- case IDOK:
- PostQuitMessage(0);
- break;
- case IDCANCEL:
- break;
- }
- break;
- case WM_LBUTTONDBLCLK:
- MessageBox(hWnd, "you have just clicked the left mouse button ;)", "", MB_ICONWARNING);
- break;
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case ID_CHANGE_CHANGEHEADER:
- LoadString(hInst, IDS_STRING102, buffer, 100);
- SetWindowText(hWnd, buffer);
- break;
- case ID_CHANGE_CHANGECURSOR:
- SetClassLong(hWnd, GCL_HCURSOR, (LONG)LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR1)));
- break;
- case ID_CHANGE_CHANGEICON:
- SetClassLong(hWnd, GCL_HICON, (LONG)LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)));
- break;
- case ID_ABOUT_SH:
- DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgPloc);
- break;
- }
- default:
- //Обробка повідомлень, які не оброблені користувачем
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement