Advertisement
fursty

PS Lab7 risunka

Apr 8th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.00 KB | None | 0 0
  1. // Win32Project9.cpp : Defines the entry point for the application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Win32Project9.h"
  6.  
  7. #define MAX_LOADSTRING 100
  8.  
  9. // Global Variables:
  10. HINSTANCE hInst; // current instance
  11. TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
  12. TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
  13.  
  14. // Forward declarations of functions included in this code module:
  15. ATOM MyRegisterClass(HINSTANCE hInstance);
  16. BOOL InitInstance(HINSTANCE, int);
  17. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  18. INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
  19.  
  20. int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
  21. _In_opt_ HINSTANCE hPrevInstance,
  22. _In_ LPTSTR lpCmdLine,
  23. _In_ int nCmdShow)
  24. {
  25. UNREFERENCED_PARAMETER(hPrevInstance);
  26. UNREFERENCED_PARAMETER(lpCmdLine);
  27.  
  28. // TODO: Place code here.
  29. MSG msg;
  30. HACCEL hAccelTable;
  31.  
  32. // Initialize global strings
  33. LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
  34. LoadString(hInstance, IDC_WIN32PROJECT9, szWindowClass, MAX_LOADSTRING);
  35. MyRegisterClass(hInstance);
  36.  
  37. // Perform application initialization:
  38. if (!InitInstance (hInstance, nCmdShow))
  39. {
  40. return FALSE;
  41. }
  42.  
  43. hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT9));
  44.  
  45. // Main message loop:
  46. while (GetMessage(&msg, NULL, 0, 0))
  47. {
  48. if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  49. {
  50. TranslateMessage(&msg);
  51. DispatchMessage(&msg);
  52. }
  53. }
  54.  
  55. return (int) msg.wParam;
  56. }
  57.  
  58.  
  59.  
  60. //
  61. // FUNCTION: MyRegisterClass()
  62. //
  63. // PURPOSE: Registers the window class.
  64. //
  65. ATOM MyRegisterClass(HINSTANCE hInstance)
  66. {
  67. WNDCLASSEX wcex;
  68.  
  69. wcex.cbSize = sizeof(WNDCLASSEX);
  70.  
  71. wcex.style = CS_HREDRAW | CS_VREDRAW;
  72. wcex.lpfnWndProc = WndProc;
  73. wcex.cbClsExtra = 0;
  74. wcex.cbWndExtra = 0;
  75. wcex.hInstance = hInstance;
  76. wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT9));
  77. wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
  78. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  79. wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WIN32PROJECT9);
  80. wcex.lpszClassName = szWindowClass;
  81. wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
  82.  
  83. return RegisterClassEx(&wcex);
  84. }
  85.  
  86. //
  87. // FUNCTION: InitInstance(HINSTANCE, int)
  88. //
  89. // PURPOSE: Saves instance handle and creates main window
  90. //
  91. // COMMENTS:
  92. //
  93. // In this function, we save the instance handle in a global variable and
  94. // create and display the main program window.
  95. //
  96. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  97. {
  98. HWND hWnd;
  99.  
  100. hInst = hInstance; // Store instance handle in our global variable
  101.  
  102. hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  103. CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
  104.  
  105. if (!hWnd)
  106. {
  107. return FALSE;
  108. }
  109.  
  110. ShowWindow(hWnd, nCmdShow);
  111. UpdateWindow(hWnd);
  112.  
  113. return TRUE;
  114. }
  115.  
  116. //
  117. // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
  118. //
  119. // PURPOSE: Processes messages for the main window.
  120. //
  121. // WM_COMMAND - process the application menu
  122. // WM_PAINT - Paint the main window
  123. // WM_DESTROY - post a quit message and return
  124. //
  125. //
  126.  
  127.  
  128.  
  129. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  130. {
  131. int wmId, wmEvent;
  132. PAINTSTRUCT ps;
  133. HDC hdc;
  134. HPEN hPen;
  135. HGDIOBJ hObj;
  136. HBRUSH hBr;
  137.  
  138.  
  139. switch (message)
  140. {
  141. case WM_COMMAND:
  142. wmId = LOWORD(wParam);
  143. wmEvent = HIWORD(wParam);
  144. // Parse the menu selections:
  145. switch (wmId)
  146. {
  147. case IDM_ABOUT:
  148. DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
  149. break;
  150. case IDM_EXIT:
  151. DestroyWindow(hWnd);
  152. break;
  153. default:
  154. return DefWindowProc(hWnd, message, wParam, lParam);
  155. }
  156. break;
  157. case WM_PAINT:
  158. {
  159. hdc = BeginPaint(hWnd, &ps);
  160. hPen = CreatePen(PS_SOLID, 1, RGB(0,0,0));
  161.  
  162. //подготвя прозореца за рисуване изапълва структурата PAINTSTRUCT &ps с информация за рисуването.
  163. // получава параметрите на текущия прозорец в rt ( rt.left, rt.rignh, rt.top, rt.bottom - integer values)
  164.  
  165. TCHAR buf[32],buf2[32];
  166.  
  167. //SendMessage(ID_X,WM_SETTEXT,NULL, (LPARAM)_itow_s(rt.right, buf, 10));
  168.  
  169. //SendMessage(ID_Y,WM_SETTEXT,NULL, (LPARAM)_itow_s(rt.bottom, buf2, 10));
  170.  
  171. hPen = CreatePen(PS_SOLID, 1, RGB(0,0,0));
  172.  
  173. //създава молив със зададените параметри за (стил, дебелина, цвят)
  174.  
  175. hObj = SelectObject(hdc,hPen);
  176.  
  177. //селектира инструмент/молив/за съответния device context
  178.  
  179. MoveToEx(hdc,20,20,NULL);//задава начална точка на линия
  180.  
  181. LineTo(hdc,20,200); //чертае линия от началната точка до крайната точка
  182.  
  183. MoveToEx(hdc,20,200,NULL);//подготвя начало за нова линия
  184.  
  185. LineTo(hdc,400,200);
  186.  
  187. hPen = CreatePen(PS_DOT, 1, RGB(55,89,144)); //създава молив
  188.  
  189. hObj = SelectObject(hdc,hPen);//избира молива за рисуване
  190.  
  191. Rectangle(hdc,40,120,60,200);//чертае правоъгълник
  192.  
  193. Ellipse(hdc,160,60,200,100);//чертае елипса
  194.  
  195. hPen = CreatePen(PS_DASH, 1, RGB(0,0,0));
  196.  
  197. hObj = SelectObject(hdc,hPen);
  198.  
  199. hBr = CreateHatchBrush(HS_DIAGCROSS,RGB(144,89,55));
  200.  
  201. hObj = SelectObject(hdc,hBr);
  202.  
  203. Rectangle(hdc,80,80,100,200);
  204.  
  205.  
  206.  
  207. hPen = CreatePen(PS_SOLID, 1, RGB(0,0,0));
  208.  
  209. hObj = SelectObject(hdc,hPen);
  210.  
  211. hBr = CreateSolidBrush(RGB(144,89,55));
  212.  
  213. hObj = SelectObject(hdc,hBr);
  214.  
  215. Rectangle(hdc,120,160,140,200);
  216.  
  217.  
  218.  
  219. hBr = CreateHatchBrush(HS_DIAGCROSS,RGB(0,255,0));
  220.  
  221. hObj = SelectObject(hdc,hBr);
  222.  
  223. RoundRect(hdc,120,120,160,160,7,8);
  224.  
  225.  
  226. hPen = CreatePen(PS_DASH, 1, RGB(0,0,0));
  227.  
  228. hObj = SelectObject(hdc,hPen);
  229.  
  230.  
  231. hObj = SelectObject(hdc,hBr);
  232.  
  233. RoundRect(hdc,20,256,512,384,32,32);
  234.  
  235.  
  236.  
  237. hPen = CreatePen(PS_SOLID, 1, RGB(223,234,0));
  238.  
  239. hObj = SelectObject(hdc,hPen);
  240.  
  241. hBr = CreateSolidBrush(RGB(223,224,55));
  242.  
  243. hObj = SelectObject(hdc,hBr);
  244.  
  245. Ellipse(hdc,200,100,300,200);
  246.  
  247.  
  248.  
  249. hBr = CreateSolidBrush(RGB(0,0,0));
  250.  
  251. hObj = SelectObject(hdc,hBr);
  252.  
  253. Ellipse(hdc,220,130,230,140);
  254. Ellipse(hdc,270,130,280,140);
  255.  
  256. Ellipse(hdc,215,150,285,180);
  257.  
  258. hBr = CreateSolidBrush(RGB(223,224,0));
  259.  
  260. hObj = SelectObject(hdc,hBr);
  261.  
  262. Ellipse(hdc,210,145,290,175);
  263.  
  264.  
  265.  
  266. EndPaint(hWnd, &ps); }
  267. break;
  268. case WM_DESTROY:
  269. PostQuitMessage(0);
  270. break;
  271. default:
  272. return DefWindowProc(hWnd, message, wParam, lParam);
  273. }
  274. return 0;
  275. }
  276.  
  277. // Message handler for about box.
  278. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  279. {
  280. UNREFERENCED_PARAMETER(lParam);
  281. switch (message)
  282. {
  283. case WM_INITDIALOG:
  284. return (INT_PTR)TRUE;
  285.  
  286. case WM_COMMAND:
  287. if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  288. {
  289. EndDialog(hDlg, LOWORD(wParam));
  290. return (INT_PTR)TRUE;
  291. }
  292. break;
  293. }
  294. return (INT_PTR)FALSE;
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement