Advertisement
Guest User

Untitled

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