VladSmirN

Untitled

Sep 25th, 2021
809
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <tchar.h>
  4. #include <stdio.h>
  5. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  6.  
  7.  
  8. int  main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {
  9.     HWND hWnd;
  10.     MSG lpMsg;
  11.     WNDCLASS w;
  12.     HBRUSH hBrush;
  13.  
  14.     w.lpszClassName = L"MyAppClass"; //имя программы
  15.     w.hInstance = hInstance; //идентификатор текущего приложения
  16.     w.lpfnWndProc = WndProc; //указатель на функцию окна
  17.     w.hCursor = LoadCursor(NULL, IDC_ARROW); //загружаем курсор
  18.     w.hIcon = 0;
  19.     w.lpszMenuName = 0;
  20.     hBrush = CreateSolidBrush(RGB(0, 0, 255));
  21.     w.hbrBackground = hBrush;
  22.  
  23.     w.style = CS_HREDRAW | CS_VREDRAW;
  24.     w.cbClsExtra = 0;
  25.     w.cbWndExtra = 0;
  26.  
  27.     //Если не удалось зарегистрировать класс окна - выходим
  28.     if (!RegisterClass(&w))
  29.         return 0;
  30.  
  31.     //Создадим окно в памяти, заполнив аргументы CreateWindow
  32.     hWnd = CreateWindow(L"MyAppClass", //Имя программы
  33.         L"Грфические возможности Win32 API", //Заголовок окна
  34.         WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
  35.         CW_USEDEFAULT, //положение окна на экране по х
  36.         CW_USEDEFAULT, //положение по у
  37.         320, //ширина
  38.         240, //высота
  39.         (HWND)NULL, //идентификатор родительского окна
  40.         (HMENU)NULL, //идентификатор меню
  41.         (HINSTANCE)hInstance, //идентификатор экземпляра программы
  42.         (HINSTANCE)NULL); //отсутствие дополнительных параметров
  43.  
  44.     //Выводим окно из памяти на экран
  45.     ShowWindow(hWnd, nCmdShow);
  46.  
  47.     //Обновим содержимое окна
  48.     UpdateWindow(hWnd);
  49.  
  50.     //Цикл обработки сообщений
  51.  
  52.     while (GetMessage(&lpMsg, NULL, 0, 0)) {
  53.         TranslateMessage(&lpMsg);
  54.         DispatchMessage(&lpMsg);
  55.     }
  56.  
  57.     return(lpMsg.wParam);
  58. }
  59.  
  60. //Функция окна
  61. LRESULT CALLBACK WndProc(HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam) {
  62.     HDC hdc; //создаём контекст устройства
  63.     PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
  64.  
  65.     RECT r;
  66.     HBRUSH hBrush;
  67.     HBRUSH hBrush1;
  68.     int x = 0, y = 0;
  69.  
  70.     //Цикл обработки сообщений
  71.     switch (messg) {
  72.     case WM_LBUTTONDOWN:
  73.  
  74.         hdc = GetDC(hWnd);
  75.  
  76.         hBrush = CreateSolidBrush(RGB(255, 0, 0)); //задаём сплошную кисть, закрашенную цветом RGB
  77.         SelectObject(hdc, hBrush); //делаем кисть активной
  78.  
  79.         x = LOWORD(lParam);//координаты с которыми нажата мышь - аргументы WndProc
  80.         y = HIWORD(lParam);
  81.  
  82.         x /= 40;
  83.         y /= 40;
  84.  
  85.         Ellipse(hdc, x * 40, y * 40, x * 40 + 40, y * 40 + 40);
  86.  
  87.         ReleaseDC(hWnd, hdc);
  88.         break;
  89.     case WM_RBUTTONDOWN:
  90.  
  91.  
  92.         break;
  93.  
  94.         //сообщение рисования
  95.     case WM_PAINT:
  96.  
  97.  
  98.  
  99.         HPEN hPen;
  100.         hPen = CreatePen(PS_DASHDOT, 3, RGB(255, 0, 255));
  101.         hdc = BeginPaint(hWnd, &ps);
  102.         int i;
  103.  
  104.         for (i = 1; i <= 10; i++) {
  105.             MoveToEx(hdc, 0, i * 40, NULL);
  106.             SelectObject(hdc, hPen);
  107.             LineTo(hdc, 400, i * 40);
  108.             MoveToEx(hdc, i * 40, 0, NULL);
  109.             SelectObject(hdc, hPen);
  110.             LineTo(hdc, i * 40, 400);
  111.         }
  112.  
  113.         EndPaint(hWnd, &ps);
  114.  
  115.         break;
  116.  
  117.     case WM_DESTROY:
  118.         PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
  119.         break;
  120.  
  121.     default:
  122.         return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
  123.     }
  124.     return 0;
  125. }
RAW Paste Data