Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // zadanie 1.cpp : Defines the entry point for the application.
- //
- #include "stdafx.h"
- #include "zadanie 1.h"
- #include <cmath>
- #define MAX_LOADSTRING 100
- // Global Variables:
- HINSTANCE hInst; // current instance
- TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
- TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
- int ak = 0;
- // Forward declarations of functions included in this code module:
- ATOM MyRegisterClass(HINSTANCE hInstance);
- BOOL InitInstance(HINSTANCE, int);
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
- VOID DRAW_TEST(HDC hdc, int ak, int xend, int yend);
- Gdiplus::PointF getpoc2(int angle,bool right,int x,int y,int length);
- int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
- _In_opt_ HINSTANCE hPrevInstance,
- _In_ LPTSTR lpCmdLine,
- _In_ int nCmdShow)
- {
- UNREFERENCED_PARAMETER(hPrevInstance);
- UNREFERENCED_PARAMETER(lpCmdLine);
- // TODO: Place code here.
- MSG msg;
- HACCEL hAccelTable;
- GdiplusStartupInput gdiplusStartupInput;
- ULONG_PTR gdiplusToken;
- GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
- // Initialize global strings
- LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadString(hInstance, IDC_ZADANIE1, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInstance);
- // Perform application initialization:
- if (!InitInstance (hInstance, nCmdShow))
- {
- return FALSE;
- }
- hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_ZADANIE1));
- // Main message loop:
- while (GetMessage(&msg, NULL, 0, 0))
- {
- if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- GdiplusShutdown(gdiplusToken);
- return (int) msg.wParam;
- }
- //
- // FUNCTION: MyRegisterClass()
- //
- // PURPOSE: Registers the window class.
- //
- ATOM MyRegisterClass(HINSTANCE hInstance)
- {
- WNDCLASSEX wcex;
- wcex.cbSize = sizeof(WNDCLASSEX);
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = WndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ZADANIE1));
- wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = MAKEINTRESOURCE(IDC_ZADANIE1);
- wcex.lpszClassName = szWindowClass;
- wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
- return RegisterClassEx(&wcex);
- }
- //
- // FUNCTION: InitInstance(HINSTANCE, int)
- //
- // PURPOSE: Saves instance handle and creates main window
- //
- // COMMENTS:
- //
- // In this function, we save the instance handle in a global variable and
- // create and display the main program window.
- //
- BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
- {
- HWND hWnd;
- hInst = hInstance; // Store instance handle in our global variable
- hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
- if (!hWnd)
- {
- return FALSE;
- }
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow(hWnd);
- return TRUE;
- }
- //
- // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
- //
- // PURPOSE: Processes messages for the main window.
- //
- // WM_COMMAND - process the application menu
- // WM_PAINT - Paint the main window
- // WM_DESTROY - post a quit message and return
- //
- //
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- int wmId, wmEvent;
- PAINTSTRUCT ps;
- HDC hdc;
- switch (message)
- {
- case WM_RBUTTONDOWN:
- {
- InvalidateRect(hWnd, NULL, true);
- ak++; if (ak>1) ak = 0;
- ::UpdateWindow(hWnd);
- }
- break;
- case WM_COMMAND:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- // Parse the menu selections:
- switch (wmId)
- {
- case IDM_ABOUT:
- DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
- break;
- case IDM_EXIT:
- DestroyWindow(hWnd);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- break;
- case WM_PAINT:
- hdc = BeginPaint(hWnd, &ps);
- // TODO: Add any drawing code here...
- RECT rt;
- GetClientRect(hWnd, &rt);
- DRAW_TEST(hdc, ak, int(rt.right), int(rt.bottom));
- EndPaint(hWnd, &ps);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
- // Message handler for about box.
- INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
- {
- UNREFERENCED_PARAMETER(lParam);
- switch (message)
- {
- case WM_INITDIALOG:
- return (INT_PTR)TRUE;
- case WM_COMMAND:
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, LOWORD(wParam));
- return (INT_PTR)TRUE;
- }
- break;
- }
- return (INT_PTR)FALSE;
- }
- VOID DRAW_TEST(HDC hdc, int ak, int xend, int yend)
- {
- int max = min(xend, yend);
- Graphics graphics(hdc); // инициация на графичен обект върху екрана
- Rect ellipseRect(xend / 2 - max / 2, yend / 2 - max / 2, max, max);// xend / 2+max/2, yend / 2+max/2); //дефиниране на елипса с горен ляв ъгъл
- //на описващия правоъгълник в средата на растера и рамери ¼ растер
- Pen bluePen(Color(255, 0, 0, 255)); // дефиниране на син молив
- Pen redPen(Color(255, 255, 0, 0)); // дефиниране на червен молив
- Pen bpen(Color(0, 0, 0));
- Pen daga[7];
- daga[0] = bluePen;
- //if (ak == 1)
- graphics.DrawEllipse(&bpen, ellipseRect); //чертае елипса
- //else
- for (int i = 0; i < 2; i++)
- graphics.DrawLine(&daga[i], getpoc2(i * 10, true, xend / 2, yend / 2, max / 2),
- getpoc2(i * 10, false , xend / 2, yend / 2, max / 2)
- //Gdiplus::PointF(Gdiplus::REAL(xend/2),
- // Gdiplus::REAL(yend/2))
- ); //чертае отсечка
- }
- //Pen daga[2] = { Color(255, 0, 0),Color(255, 128, 0) };// , Color(255, 255, 0), Color(0, 255, 0), Color(0, 255, 255), Color(0, 0, 255), Color(255, 0, 255)};
- Gdiplus::PointF getpoc2(int angle, bool right, int x, int y, int length)
- {
- if (right)
- {
- return Gdiplus::PointF(
- Gdiplus::REAL(_CMATH_::cos( 3.14*((float)angle)/180.0 )*((float)length)+(float)x),
- Gdiplus::REAL(_CMATH_::sin(3.14*((float)angle) / 180.0)*((float)length) + (float)y)
- );
- }
- else
- {
- return Gdiplus::PointF(
- Gdiplus::REAL(_CMATH_::cos(3.14*((float)angle) / 180.0-3.14)*((float)length) + (float)x),
- Gdiplus::REAL(_CMATH_::sin(3.14*((float)angle) / 180.0-3.14)*((float)length) + (float)y)
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement