#include #include using namespace std; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LPTSTR className = L"nazwaKlasy"; WNDCLASSEX wc;// , wc2; HWND hwnd, knefel; MSG msg; PAINTSTRUCT ps; RECT rect; HDC hdc; POINT pojnt = { rect.right - 85,rect.top + 30 }, trojkat[3]; HPEN p1 = CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); HBRUSH b1 = CreateSolidBrush(RGB(255, 255, 255)); HBRUSH b2 = CreateSolidBrush(RGB(255, 255, 255)); HBRUSH brushes[12] = { CreateSolidBrush(RGB(255,0,0)), CreateSolidBrush(RGB(0,255,0)), CreateSolidBrush(RGB(0,0,255)), CreateSolidBrush(RGB(255,255,0)), CreateSolidBrush(RGB(255,0,255)), CreateSolidBrush(RGB(0,255,255)), CreateSolidBrush(RGB(127,0,0)), CreateSolidBrush(RGB(0,127,0)), CreateSolidBrush(RGB(0,0,127)), CreateSolidBrush(RGB(127,127,0)), CreateSolidBrush(RGB(127,0,127)), CreateSolidBrush(RGB(0,127,127)) }; int figora = 2; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR plCmdLine, int mShowCMD) { wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = className; wc.lpszMenuName = NULL; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if (RegisterClassEx(&wc)) { if ((hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, className, L"Paint", WS_OVERLAPPEDWINDOW, 500, 300, 900, 700, NULL, NULL, hInstance, NULL)) != NULL) { ShowWindow(hwnd, mShowCMD); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } else MessageBox(NULL, L"Error", L"Create Window", MB_OK); } else MessageBox(NULL, L"Error", L"Register CLASS", MB_OK); ShowWindow(hwnd, mShowCMD); DestroyWindow(hwnd); return 0; } LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { GetClientRect(hwnd, &rect); switch (msg) { case WM_SIZE: { UpdateWindow(hwnd); break; } case WM_LBUTTONDOWN: { pojnt.x = LOWORD(lparam); pojnt.y = HIWORD(lparam); if (pojnt.x >= (rect.right - 110) && pojnt.x <= (rect.right - 79) && pojnt.y >= (rect.top + 310) && pojnt.y <= (rect.top + 341)) figora = 0; else if (pojnt.x >= (rect.right - 73) && pojnt.x <= (rect.right - 42) && pojnt.y >= (rect.top + 310) && pojnt.y <= (rect.top + 341)) figora = 1; else if (pojnt.x >= (rect.right - 36) && pojnt.x <= (rect.right - 5) && pojnt.y >= (rect.top + 310) && pojnt.y <= (rect.top + 341)) figora = 2; InvalidateRect(hwnd, &rect, 0); break; } case WM_RBUTTONDOWN: { InvalidateRect(hwnd, &rect, 2); break; } case WM_PAINT: { hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); if (pojnt.x >= (rect.right - 115) && pojnt.y <= (rect.top + 315)) { COLORREF bg = GetPixel(hdc, pojnt.x, pojnt.y); b2 = CreateSolidBrush(RGB(GetRValue(bg), GetGValue(bg), GetBValue(bg))); } if (pojnt.x <= (rect.right - 115) || pojnt.y >= (rect.top + 346)) { SelectObject(hdc, b2); switch (figora) { case 0: { Rectangle(hdc, pojnt.x - 20, pojnt.y - 20, pojnt.x + 20, pojnt.y + 20); break; } case 1: { trojkat[0] = pojnt; trojkat[0].y -= 15; trojkat[1] = pojnt; trojkat[1].x += 18; trojkat[1].y += 15; trojkat[2] = pojnt; trojkat[2].x -= 18; trojkat[2].y += 15; Polygon(hdc, trojkat, 3); break; } case 2: { Ellipse(hdc, pojnt.x - 20, pojnt.y - 20, pojnt.x + 20, pojnt.y + 20); break; } } } b1 = CreateSolidBrush(RGB(255, 255, 255)); SelectObject(hdc, b1); Rectangle(hdc, rect.right - 115, rect.top, rect.right, rect.top + 346); p1 = CreatePen(PS_NULL, 1, RGB(0, 0, 0)); SelectObject(hdc, p1); for (int i = 1; i<3; i++) for (int j = 0; j<6; j++) { b1 = brushes[(i - 1) * 6 + j]; SelectObject(hdc, b1); Rectangle(hdc, rect.right - 110 / i, rect.top + 5 + 50 * j, rect.right - 110 / i + 50, rect.top + 55 + 50 * j); } p1 = CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); SelectObject(hdc, p1); b1 = CreateSolidBrush(RGB(255, 255, 255)); SelectObject(hdc, b1); Rectangle(hdc, rect.right - 110, rect.top + 310, rect.right - 79, rect.top + 341); Rectangle(hdc, rect.right - 73, rect.top + 310, rect.right - 42, rect.top + 341); Rectangle(hdc, rect.right - 36, rect.top + 310, rect.right - 5, rect.top + 341); b1 = CreateSolidBrush(RGB(0, 0, 0)); SelectObject(hdc, b1); Rectangle(hdc, rect.right - 102, rect.top + 318, rect.right - 87, rect.top + 333); MoveToEx(hdc, rect.right - 58, rect.top + 316, 0); LineTo(hdc, rect.right - 48, rect.top + 333); LineTo(hdc, rect.right - 67, rect.top + 333); LineTo(hdc, rect.right - 58, rect.top + 316); Ellipse(hdc, rect.right - 29, rect.top + 317, rect.right - 12, rect.top + 334); //TextOutA(hdc,pojnt.x,pojnt.y,"TU KLIK",7); //SetPixel(hdc,pojnt.x,pojnt.y,RGB(255,0,0)); EndPaint(hwnd, &ps); UpdateWindow(hwnd); break; } case WM_CLOSE: { if (MessageBox(hwnd, L"Zamkn��?", L"Allert", MB_YESNO | MB_ICONWARNING) == IDYES) { DestroyWindow(hwnd); } break; } case WM_DESTROY: { PostQuitMessage(0); break; } default: { return DefWindowProc(hwnd, msg, wparam, lparam); } } }