Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 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. const int WIDTH = 400;
  44. const int HEIGHT = 300;
  45. static int sx, sy, i, k;
  46. static HBRUSH hBrush;
  47. HRGN hRgn;
  48. int a, b, x_scr, y_scr; //Экранные координаты
  49. double x, h; //Физические координаты
  50. //Обработчик сообщений
  51. switch(message)
  52. {
  53. case WM_SIZE :
  54. sx = LOWORD(lParam);
  55. sy = HIWORD(lParam);
  56. break;
  57. case WM_PAINT:
  58. hBrush = CreateSolidBrush(RGB(255, 0, 0));
  59. hdc = BeginPaint(hWnd, &ps);
  60. //Установка режима
  61. SetMapMode(hdc, MM_ANISOTROPIC);
  62. //Установка логических размеров вывода, ось Y направлена вверх
  63. SetWindowExtEx(hdc, WIDTH, -HEIGHT, NULL);
  64. //Установка физических размеров на окно
  65. SetViewportExtEx(hdc, sx, sy, NULL);
  66. //Установка начала координат
  67. SetViewportOrgEx(hdc, sx/2, sy/2, NULL);
  68. SelectObject(hdc, hBrush);
  69. //SetPolyFillMode(hdc, WINDING); //Режим закрашивания "вся фигура"
  70. Ellipse(hdc,-50, 200, 50, -200);
  71. EndPaint(hWnd, &ps);
  72. break;
  73. case WM_DESTROY : PostQuitMessage(0);
  74. break;
  75. //Обработка сообщения по-уолчанию
  76. default : return DefWindowProc (hWnd, message, wParam, lParam);
  77. }
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement