Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.36 KB | None | 0 0
  1. #include <windows.h> // підключення бібліотеки з функціями API
  2. #include "resource.h"
  3.  
  4. // Глобальні змінні:
  5. HINSTANCE hInst;    //Дескриптор програми
  6. LPCTSTR szWindowClass = "Kravchenko";
  7. LPCTSTR szTitle = "Nazar Kravchenko";
  8.  
  9. // Попередній опис функцій
  10. ATOM MyRegisterClass(HINSTANCE hInstance);
  11. BOOL InitInstance(HINSTANCE, int);
  12. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  13.  
  14. // Основна програма
  15. int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  16. {
  17.     MSG msg;
  18.     // Реєстрація класу вікна
  19.     MyRegisterClass(hInstance);
  20.  
  21.     // Створення вікна програми
  22.     if (!InitInstance(hInstance, nCmdShow))
  23.     {
  24.         return FALSE;
  25.     }
  26.  
  27.     // Цикл обробки повідомлень
  28.     while (GetMessage(&msg, NULL, 0, 0))
  29.     {
  30.         TranslateMessage(&msg);
  31.         DispatchMessage(&msg);
  32.     }
  33.     return msg.wParam;
  34. }
  35.  
  36.  
  37. ATOM MyRegisterClass(HINSTANCE hInstance)
  38. {
  39.     WNDCLASSEX wcex;
  40.     wcex.cbSize = sizeof(WNDCLASSEX);
  41.     wcex.style = CS_VREDRAW | CS_DBLCLKS;       //стиль вікна
  42.     wcex.lpfnWndProc = (WNDPROC)WndProc;        //віконна процедура
  43.     wcex.cbClsExtra = 0;
  44.     wcex.cbWndExtra = 0;
  45.     wcex.hInstance = hInstance;             //дескриптор програми
  46.     wcex.hIcon = LoadIcon(NULL, IDI_INFORMATION);       //визначення іконки
  47.     wcex.hCursor = LoadCursor(NULL, IDC_NO );   //визначення курсору
  48.     wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //установка фону
  49.     wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);                 //визначення меню
  50.     wcex.lpszClassName = szWindowClass;         //ім’я класу
  51.     wcex.hIconSm = NULL;
  52.  
  53.     return RegisterClassEx(&wcex);          //реєстрація класу вікна
  54. }
  55. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  56. {
  57.     HWND hWnd;
  58.     hInst = hInstance; //зберігає дескриптор додатка в змінній hInst
  59.     hWnd = CreateWindow(szWindowClass,  // ім’я класу вікна
  60.         szTitle,                // назва програми
  61.         WS_OVERLAPPEDWINDOW,            // стиль вікна
  62.         NULL,           // положення по Х  
  63.         0,          // положення по Y   
  64.         400,            // розмір по Х
  65.         500,            // розмір по Y
  66.         NULL,                   // дескриптор батьківського вікна  
  67.         NULL,                   // дескриптор меню вікна
  68.         hInstance,              // дескриптор програми
  69.         NULL);              // параметри створення.
  70.  
  71.     if (!hWnd)  //Якщо вікно не творилось, функція повертає FALSE
  72.     {
  73.         return FALSE;
  74.     }
  75.     ShowWindow(hWnd, SW_SHOWMINIMIZED);         //Показати вікно
  76.     UpdateWindow(hWnd);                 //Оновити вікно
  77.     return TRUE;
  78. }
  79. int CALLBACK DlgPloc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  80. {
  81.     switch (message)
  82.     {
  83.     case WM_INITDIALOG: //ініціалізація функціоналу керування діалоговим вікном
  84.         return TRUE;
  85.         //цикл обробки натискання елементів на формі діалогового вікна
  86.     case WM_COMMAND:
  87.         if (LOWORD(wParam) == ID_ABOUT_2)
  88.         {
  89.             MessageBox(hDlg, "e-mail:\tnazar.kravchenko@nure.ua", "Додаткова інформація", MB_OK);
  90.         }
  91.         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  92.         {
  93.             EndDialog(hDlg, LOWORD(wParam));//знищення модального діалогового вікна
  94.             return TRUE;
  95.         }
  96.         break;
  97.     }
  98.     return FALSE;
  99. }
  100. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  101. {
  102.     PAINTSTRUCT ps;
  103.     HDC hdc;
  104.     RECT rt;
  105.     int result;
  106.     char buffer[100];
  107.     switch (message)
  108.     {
  109.     case WM_CREATE:                 //Повідомлення приходить при створенні вік-на
  110.         break;
  111.  
  112.     case WM_PAINT:              //Перемалювати вікно
  113.         hdc = BeginPaint(hWnd, &ps);    //Почати графічний вивід   
  114.         GetClientRect(hWnd, &rt);       //Область вікна для малювання
  115.         DrawText(hdc, "Привіт, світ!", -1, &rt, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
  116.         EndPaint(hWnd, &ps);        //Закінчити графічний вивід 
  117.         break;
  118.  
  119.     case WM_CLOSE:              //Завершення роботи
  120.         result = DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG2), hWnd, DlgPloc);
  121.         switch (result)
  122.         {
  123.         case IDOK:
  124.             PostQuitMessage(0);
  125.             break;
  126.         case IDCANCEL:
  127.             break;
  128.         }
  129.         break;
  130.     case WM_LBUTTONDBLCLK:
  131.         MessageBox(hWnd, "you have just clicked the left mouse button ;)", "", MB_ICONWARNING);
  132.         break; 
  133.     case WM_COMMAND:
  134.         switch (LOWORD(wParam)) {
  135.         case ID_CHANGE_CHANGEHEADER:
  136.             LoadString(hInst, IDS_STRING102, buffer, 100);
  137.             SetWindowText(hWnd, buffer);
  138.             break;
  139.         case ID_CHANGE_CHANGECURSOR:
  140.             SetClassLong(hWnd, GCL_HCURSOR, (LONG)LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR1)));
  141.             break;
  142.         case ID_CHANGE_CHANGEICON:
  143.             SetClassLong(hWnd, GCL_HICON, (LONG)LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)));
  144.             break;
  145.         case ID_ABOUT_SH:
  146.             DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgPloc);
  147.             break;
  148.         }
  149.     default:
  150.         //Обробка повідомлень, які не оброблені користувачем
  151.         return DefWindowProc(hWnd, message, wParam, lParam);
  152.     }
  153.     return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement