Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.68 KB | None | 0 0
  1.  
  2. // WindowsProject1.cpp : Определяет точку входа для приложения.
  3. //
  4.  
  5. #include "stdafx.h"
  6.  
  7. #include "WindowsProject3.h"
  8.  
  9.  
  10.  
  11. #define MAX_LOADSTRING 100
  12.  
  13. bool X = TRUE;
  14. // Глобальные переменные:
  15. HINSTANCE hInst; // текущий экземпляр
  16. WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка
  17. WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна
  18.  
  19. // Отправить объявления функций, включенных в этот модуль кода:
  20. ATOM MyRegisterClass(HINSTANCE hInstance);
  21. BOOL InitInstance(HINSTANCE, int);
  22. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  23. INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
  24.  
  25. int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
  26. _In_opt_ HINSTANCE hPrevInstance,
  27. _In_ LPWSTR lpCmdLine,
  28. _In_ int nCmdShow)
  29. {
  30. UNREFERENCED_PARAMETER(hPrevInstance);
  31. UNREFERENCED_PARAMETER(lpCmdLine);
  32.  
  33. // TODO: Разместите код здесь.
  34.  
  35. // Инициализация глобальных строк
  36. LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
  37. LoadStringW(hInstance, IDC_WINDOWSPROJECT3, szWindowClass, MAX_LOADSTRING);
  38. MyRegisterClass(hInstance);
  39.  
  40. // Выполнить инициализацию приложения:
  41. if (!InitInstance(hInstance, nCmdShow))
  42. {
  43. return FALSE;
  44. }
  45.  
  46. HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT3));
  47.  
  48. MSG msg;
  49.  
  50. // Цикл основного сообщения:
  51. while (GetMessage(&msg, nullptr, 0, 0))
  52. {
  53. if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  54. {
  55. TranslateMessage(&msg);
  56. DispatchMessage(&msg);
  57. }
  58. }
  59.  
  60. return (int)msg.wParam;
  61. }
  62.  
  63.  
  64.  
  65. //
  66. // ФУНКЦИЯ: MyRegisterClass()
  67. //
  68. // ЦЕЛЬ: Регистрирует класс окна.
  69. //
  70. ATOM MyRegisterClass(HINSTANCE hInstance)
  71. {
  72. WNDCLASSEXW wcex;
  73.  
  74. wcex.cbSize = sizeof(WNDCLASSEX);
  75.  
  76. wcex.style = CS_HREDRAW | CS_VREDRAW;
  77. wcex.lpfnWndProc = WndProc;
  78. wcex.cbClsExtra = 0;
  79. wcex.cbWndExtra = 0;
  80. wcex.hInstance = hInstance;
  81. wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT3));
  82. wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
  83. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  84. wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_WINDOWSPROJECT3);
  85. wcex.lpszClassName = szWindowClass;
  86. wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
  87.  
  88. return RegisterClassExW(&wcex);
  89. }
  90.  
  91. //
  92. // ФУНКЦИЯ: InitInstance(HINSTANCE, int)
  93. //
  94. // ЦЕЛЬ: Сохраняет маркер экземпляра и создает главное окно
  95. //
  96. // КОММЕНТАРИИ:
  97. //
  98. // В этой функции маркер экземпляра сохраняется в глобальной переменной, а также
  99. // создается и выводится главное окно программы.
  100. //
  101. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  102. {
  103. hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной
  104.  
  105. HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  106. CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
  107.  
  108. if (!hWnd)
  109. {
  110. return FALSE;
  111. }
  112.  
  113. ShowWindow(hWnd, nCmdShow);
  114. UpdateWindow(hWnd);
  115.  
  116. return TRUE;
  117. }
  118.  
  119. //
  120. // ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
  121. //
  122. // ЦЕЛЬ: Обрабатывает сообщения в главном окне.
  123. //
  124. // WM_COMMAND - обработать меню приложения
  125. // WM_PAINT - Отрисовка главного окна
  126. // WM_DESTROY - отправить сообщение о выходе и вернуться
  127. //
  128. //
  129. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  130. {
  131. switch (message)
  132. {
  133. case WM_COMMAND:
  134. {
  135. int wmId = LOWORD(wParam);
  136. // Разобрать выбор в меню:
  137. switch (wmId)
  138. {
  139. case IDM_ABOUT:
  140. DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
  141. break;
  142. case IDM_EXIT:
  143. DestroyWindow(hWnd);
  144. break;
  145. default:
  146. return DefWindowProc(hWnd, message, wParam, lParam);
  147. }
  148. }
  149. break;
  150. case WM_PAINT:
  151. {
  152.  
  153. PAINTSTRUCT ps;
  154. HDC hdc = BeginPaint(hWnd, &ps);
  155.  
  156. // TODO: Добавьте сюда любой код прорисовки, использующий HDC...
  157. HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
  158. HPEN carpen = CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
  159. HBRUSH white = CreateSolidBrush(RGB(0, 0, 0));
  160. HBRUSH brushblack = CreateSolidBrush(RGB(0, 0, 0));
  161. HBRUSH whiteblue = CreateSolidBrush(RGB(154, 166, 230));
  162. HBRUSH brush = CreateSolidBrush(RGB(0, 255, 234));
  163. HBRUSH brushback = CreateSolidBrush(RGB(120, 230, 234));
  164. HBRUSH brushwheel = CreateSolidBrush(RGB(31, 21, 1));
  165. HBRUSH brushdisk = CreateSolidBrush(RGB(110, 106, 70));
  166.  
  167. POINT White[4];
  168.  
  169. White[0].x = 10;//Контур
  170. White[0].y = 10;
  171. White[1].x = 1320;
  172. White[1].y = 10;
  173. White[2].x = 1320;
  174. White[2].y = 650;
  175. White[3].x = 10;
  176. White[3].y = 650;
  177. White[4].x = 10;
  178. White[4].y = 10;
  179. SelectObject(hdc, white);
  180. Polygon(hdc, White, 5);//
  181.  
  182. POINT points[50];
  183.  
  184. points[0].x = 10;//Контур
  185. points[0].y = 10;
  186. points[1].x = 1320;
  187. points[1].y = 10;
  188. points[2].x = 1320;
  189. points[2].y = 650;
  190. points[3].x = 10;
  191. points[3].y = 650;
  192. points[4].x = 10;
  193. points[4].y = 10;
  194. SelectObject(hdc, pen);
  195. Polyline(hdc, points, 5);//
  196.  
  197. POINT car[50];
  198.  
  199. int carx[50] = { 130,130,180,360,360,380,980,1130,1280,1290,1240,130 };
  200. int cary[50] = { 490,280,180,180,90,40,40,220,220,410,490,490 };
  201.  
  202. for (int i = 0; i <= 50; i++) {
  203. car[i].x = carx[i];
  204. car[i].y = cary[i];
  205.  
  206.  
  207. }
  208. //wheels + car
  209. SelectObject(hdc, brushwheel);//Левое дальнее колесо
  210. Ellipse(hdc, 340, 390, 480, 540);
  211. SelectObject(hdc, brushwheel);//right far колесо
  212. Ellipse(hdc, 1010, 400, 1150, 550);
  213.  
  214.  
  215. SelectObject(hdc, brush);//car paint
  216. Polygon(hdc, car, 12);
  217.  
  218. SelectObject(hdc, brushwheel);//Левое ближнее колесо
  219. Ellipse(hdc, 270, 430, 410, 580);
  220.  
  221. SelectObject(hdc, brushdisk);//Левое ближнее диск
  222. Ellipse(hdc, 300, 460, 380, 550);
  223.  
  224.  
  225. SelectObject(hdc, brushwheel);//right ближнее колесо
  226. Ellipse(hdc, 940, 430, 1080, 580);
  227. SelectObject(hdc, brushdisk);//right far disk
  228. Ellipse(hdc, 970, 460, 1050, 550);
  229.  
  230. //wheels + car end
  231.  
  232. //doors
  233. POINT door[50];
  234. int doorx[50] = { 360,360,450,650,650,390,360,360,450,920,920,640 };
  235. int doory[50] = { 180,340,440,440,170,170,180,340,440,440,170,170 };
  236. for (int i = 0; i <= 50; i++) {
  237. door[i].x = doorx[i];
  238. door[i].y = doory[i];
  239. }
  240. SelectObject(hdc, pen);//car paint
  241. Polyline(hdc, door, 12);
  242.  
  243. //window
  244. SelectObject(hdc, whiteblue);
  245. Rectangle(hdc, 370, 180, 640, 310);
  246. Rectangle(hdc, 660, 180, 910, 310);
  247. POINT windowrec[3];
  248. windowrec[0].x = 940;
  249. windowrec[0].y = 180;
  250. windowrec[1].x = 940;
  251. windowrec[1].y = 310;
  252. windowrec[2].x = 1060;
  253. windowrec[2].y = 310;
  254.  
  255. POINT windowmain[4];
  256. windowmain[0].x = 1010;
  257. windowmain[0].y = 90;
  258. windowmain[1].x = 1120;
  259. windowmain[1].y = 220;
  260. windowmain[2].x = 1080;
  261. windowmain[2].y = 260;
  262. windowmain[3].x = 960;
  263. windowmain[3].y = 130;
  264.  
  265. Polygon(hdc, windowmain, 4);
  266. Polygon(hdc, windowrec, 3);
  267.  
  268. POINT back[4];
  269. back[0].x = 200;
  270. back[0].y = 200;
  271. back[1].x = 350;
  272. back[1].y = 200;
  273. back[2].x = 350;
  274. back[2].y = 250;
  275. back[3].x = 180;
  276. back[3].y = 250;
  277.  
  278. SelectObject(hdc, brushback);
  279. Polygon(hdc, back, 4);
  280.  
  281. POINT muffler[4];
  282. muffler[0].x = 40;
  283. muffler[0].y = 400;
  284. muffler[1].x = 130;
  285. muffler[1].y = 400;
  286. muffler[2].x = 130;
  287. muffler[2].y = 450;
  288. muffler[3].x = 40;
  289. muffler[3].y = 450;
  290. SelectObject(hdc, brushblack);
  291. Polygon(hdc, muffler, 4);
  292. POINT z[5];
  293. z[0].x = 1230;
  294. z[0].y = 490;
  295. z[1].x = 1230;
  296. z[1].y = 310;
  297. z[2].x = 1280;
  298. z[2].y = 230;
  299. z[3].x = 1230;
  300. z[3].y = 310;
  301. z[4].x = 1085;
  302. z[4].y = 310;
  303. Polyline(hdc, z, 5);
  304.  
  305.  
  306. //hood down end
  307.  
  308.  
  309.  
  310. //////////////////////////
  311. //hood up
  312. if (X) {
  313.  
  314. HBRUSH brush1 = CreateSolidBrush(RGB(0, 255, 234));
  315.  
  316. POINT hoodup[7];
  317. hoodup[0].x = 1140;
  318. hoodup[0].y = 230;
  319. hoodup[1].x = 1210;
  320. hoodup[1].y = 160;
  321. hoodup[2].x = 1170;
  322. hoodup[2].y = 260;
  323. hoodup[3].x = 1090;
  324. hoodup[3].y = 310;
  325.  
  326. SelectObject(hdc, brush1);
  327. Polygon(hdc, hoodup, 4);
  328.  
  329.  
  330. //hood down
  331. POINT hood[7];
  332. hood[0].x = 1140;
  333. hood[0].y = 230;
  334. hood[1].x = 1280;
  335. hood[1].y = 230;
  336. hood[2].x = 1230;
  337. hood[2].y = 310;
  338. hood[3].x = 1230;
  339. hood[3].y = 310;
  340. hood[4].x = 1085;//
  341. hood[4].y = 310;
  342. hood[5].x = 1140;
  343. hood[5].y = 230;
  344. //black
  345. Polyline(hdc, hood, 6);
  346.  
  347. EndPaint(hWnd, &ps);
  348. }
  349. }
  350. break;
  351.  
  352. case WM_LBUTTONDOWN:///////
  353. {
  354.  
  355. X = !X;
  356. InvalidateRect(hWnd, NULL, false);
  357. UpdateWindow(hWnd);
  358.  
  359. break;
  360. }
  361. case WM_DESTROY:
  362. PostQuitMessage(0);
  363. break;
  364. default:
  365. return DefWindowProc(hWnd, message, wParam, lParam);
  366. }
  367. return 0;
  368. }
  369.  
  370. // Обработчик сообщений для окна "О программе".
  371. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  372. {
  373. UNREFERENCED_PARAMETER(lParam);
  374. switch (message)
  375. {
  376. case WM_INITDIALOG:
  377. return (INT_PTR)TRUE;
  378.  
  379. case WM_COMMAND:
  380. if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  381. {
  382. EndDialog(hDlg, LOWORD(wParam));
  383. return (INT_PTR)TRUE;
  384. }
  385. break;
  386. }
  387. return (INT_PTR)FALSE;
  388. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement