ColonelNV

лаба 3 №3

Nov 4th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include <Windows.h>
  2. #include <tchar.h>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  7. TCHAR WinName[] = _T("MainFrame");
  8. int APIENTRY WinMain(HINSTANCE This, HINSTANCE Prev, LPSTR cmd, int mode)
  9. {
  10.     HWND hWnd;
  11.     MSG msg;
  12.     WNDCLASS wc;
  13.     wc.hInstance = This;
  14.     wc.lpszClassName = WinName;
  15.     wc.lpfnWndProc = WndProc;
  16.     wc.style = CS_HREDRAW;
  17.     wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  18.     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  19.     wc.lpszMenuName = NULL;
  20.     wc.cbClsExtra = 0;
  21.     wc.cbWndExtra = 0;
  22.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  23.     if (!RegisterClass(&wc))return 0;
  24.     hWnd = CreateWindow(WinName,
  25.         _T("каркас Windows приложения"),
  26.         WS_OVERLAPPEDWINDOW,
  27.         CW_USEDEFAULT,
  28.         CW_USEDEFAULT,
  29.         CW_USEDEFAULT,
  30.         CW_USEDEFAULT,
  31.         HWND_DESKTOP,
  32.         NULL,
  33.         This,
  34.         NULL);
  35.     ShowWindow(hWnd, mode);
  36.     while (GetMessage(&msg, NULL, 0, 0))
  37.     {
  38.         TranslateMessage(&msg);
  39.         DispatchMessage(&msg);
  40.     } return 0;
  41. }
  42. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  43. {
  44.     PAINTSTRUCT ps;
  45.     HDC hdc;
  46.     static int sx, sy;
  47.     static HPEN hpen;
  48.     vector<POINT> v;
  49.     switch (message)
  50.     {
  51.     case WM_SIZE: {
  52.         sx = LOWORD(lParam);
  53.         sy = HIWORD(lParam);
  54.         break;
  55.     }
  56.     case WM_CREATE: {
  57.         hpen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
  58.            
  59.         v.push_back({ -100,100 });
  60.         v.push_back({ -100,-100 });
  61.         v.push_back({ 100,-100 });
  62.         v.push_back({ 100,100 });
  63.         v.push_back({ 150,100 });
  64.         v.push_back({ 150,-100 });
  65.         v.push_back({ 250,-100 });
  66.         v.push_back({ 250,100 });
  67.  
  68.         break;
  69.     }
  70.     case WM_PAINT:{
  71.         hdc = BeginPaint(hWnd, &ps);
  72.         SelectObject(hdc, hpen);
  73.         for (int i = 0; i < 3; i++) {
  74.             LineTo(hdc, v[i].x, v[i].y);
  75.             MoveToEx(hdc, v[i].x, v[i].y, NULL);
  76.         }
  77.             Ellipse(hdc, v[4].x, v[5].y, v[6].x, v[7].y);
  78.         EndPaint(hWnd, &ps);
  79.         break;
  80.     }
  81.     case WM_DESTROY: PostQuitMessage(0);
  82.         break;
  83.     default:
  84.         return DefWindowProc(hWnd, message, wParam, lParam);
  85.     }
  86.     return 0;
  87. }
Add Comment
Please, Sign In to add comment