Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | None | 0 0
  1. #include <windows.h>
  2. #include <tchar.h>
  3. LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
  4. TCHAR WinName[] = _T("MainFrame");
  5. //------------------------------------------------
  6. int APIENTRY WinMain (HINSTANCE This, HINSTANCE Prev, LPSTR cmd, int mode)
  7. {
  8. HWND hWnd; //дескриптор главного окна программы
  9. MSG msg; //Структура для хранения сообщений
  10. WNDCLASS wc; //класс окна
  11. //Определение класса окна
  12. wc.hInstance = This;
  13. wc.lpszClassName = WinName;
  14. wc.lpfnWndProc = WndProc;
  15. wc.style = CS_HREDRAW | CS_VREDRAW;
  16. wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  17. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  18. wc.lpszMenuName = NULL; //Нет меняю
  19. wc.cbClsExtra = 0; //нет дополнительных данных класса
  20. wc.cbWndExtra = 0; //нет дополнительных данных окна
  21. //Заполнение окна белым цветом
  22. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //установка цвета фона
  23. if (!RegisterClass(&wc)) return 0; //регистрация класса окна
  24. //создане окна
  25. hWnd = CreateWindow(WinName, _T("Windows-приложения"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  26. HWND_DESKTOP /*Дескриптор родительского окна*/ , NULL /*Нет меню*/, This /*дескриптор приложения*/,
  27. NULL /*Дополнительной информации нет*/);
  28. ShowWindow(hWnd, mode);
  29. //ЦИкл обработки сообщений
  30. while (GetMessage(&msg, NULL, 0, 0)) //цикл получения сообщений
  31. {
  32. TranslateMessage(&msg); //функция трансляции кодов нажатой клавиши
  33. DispatchMessage(&msg); //посылает сообщение функции wndproc()
  34. }
  35. return 0; //при положительном завершении программы в главную функцию возвращается 0
  36. }
  37. //-------------------------------------
  38. //оконная функция вызываемая операционной системой и получает сообщения из очереди для данного приложения
  39. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  40. {
  41. PAINTSTRUCT ps;
  42. HDC hdc;
  43. POINT pt[5] = {{0, 100}, {-59, -81}, {95, 31}, {-95, 31}, {59, -81}};
  44. const int WIDTH = 400;
  45. const int HEIGHT = 300;
  46. static int sx, sy, i, k;
  47. static HBRUSH hBrush;
  48. HRGN hRgn;
  49. int a, b, x_scr, y_scr; //Экранные координаты
  50. double x, h; //Физические координаты
  51. //Обработчик сообщений
  52. switch(message)
  53. {
  54. case WM_SIZE :
  55. sx = LOWORD(lParam);
  56. sy = HIWORD(lParam);
  57. break;
  58. case WM_CREATE:
  59. i = MessageBox(hWnd, _T("Будем рисовать красную звезду?"),
  60. _T("Политический вопрос"), MB_YESNO | MB_ICONQUESTION);
  61. k = (i == IDYES)? 1 : 0;
  62. break;
  63. case WM_PAINT:
  64. hBrush = CreateSolidBrush(RGB(255, 0, 0));
  65. hdc = BeginPaint(hWnd, &ps);
  66. //Установка режима
  67. SetMapMode(hdc, MM_ANISOTROPIC);
  68. //Установка логических размеров вывода, ось Y направлена вверх
  69. SetWindowExtEx(hdc, WIDTH, -HEIGHT, NULL);
  70. //Установка физических размеров на окно
  71. SetViewportExtEx(hdc, sx, sy, NULL);
  72. //Установка начала координат
  73. SetViewportOrgEx(hdc, sx/2, sy/2, NULL);
  74. BeginPath(hdc);
  75. Polyline(hdc, pt, 5);
  76. CloseFigure(hdc);
  77. EndPath(hdc);
  78. SelectObject(hdc, hBrush);
  79. SetPolyFillMode(hdc, WINDING); //Режим закрашивания "вся фигура"
  80. FillPath(hdc);
  81. EndPaint(hWnd, &ps);
  82. break;
  83. case WM_DESTROY : PostQuitMessage(0);
  84. break;
  85. //Обработка сообщения по-уолчанию
  86. default : return DefWindowProc (hWnd, message, wParam, lParam);
  87. }
  88. return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement