Advertisement
Margoshinka

WinApi

Sep 25th, 2021
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  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 WINAPI WinMain(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. hdc = BeginPaint(hWnd, &ps);
  97.  
  98. int i;
  99. hBrush1 = CreateSolidBrush(RGB(255, 0, 0));
  100. SelectObject(hdc, hBrush1);
  101. for (i = 1; i <= 10; i++) {
  102. MoveToEx(hdc, 0, i * 40, NULL);
  103. LineTo(hdc, 400, i * 40);
  104. MoveToEx(hdc, i * 40, 0, NULL);
  105. LineTo(hdc, i * 40, 400);
  106. }
  107.  
  108.  
  109.  
  110. EndPaint(hWnd, &ps);
  111. break;
  112.  
  113. //сообщение выхода - разрушение окна
  114. case WM_DESTROY:
  115. PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
  116. break;
  117.  
  118. default:
  119. return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
  120. }
  121. return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement