Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #define SCREEN_WIDTH 1000
- #define SCREEN_HIGHT 1000
- #define KWADRAT 40
- int Kolory[]={ RGB (195,195,195), // jasny szary
- RGB(127,127,127), //szary
- RGB(200,100,50), //khaki
- RGB(185,122,87), //brazowy
- RGB(34,177,76), //zielony
- RGB(115,148,16), //kupa 5
- RGB(63,72,204), // granatowy
- RGB(163,73,164), // ciemnyfiolet
- RGB(112,146,190), // morski
- RGB(89,17,238), // niebieski
- RGB (255,255,255), // bialy 10
- RGB (0,0,0) // ciorny
- };
- typedef enum
- {
- TrojkatP =1 ,
- TrojkatW,
- Elipsa,
- Kwadrat
- }TFigury;
- TCHAR NazwaAplikacji[] = TEXT("Apka");
- TCHAR NazwaKlasy[] = TEXT("OKNOGLOWNE");
- bool WlaczRysowanie=false;
- bool RysujTrojkatP, RysujTrojkatW,RysujElipsa,RysujKwadrat = false;
- int LKolor=0,RKolor=0, Figura;
- bool ObszarRysowania(LPARAM lParam)
- {
- float mouseX = LOWORD(lParam);
- if (mouseX < SCREEN_WIDTH-300 ) return true;
- else return false;
- }
- int WyborKoloru (LPARAM lParam)
- {
- float mouseX = LOWORD(lParam);
- float mouseY = HIWORD(lParam);
- for (int i=1; i<10; i++)
- {
- if (mouseX >= SCREEN_WIDTH-280 && mouseX <= SCREEN_WIDTH-240 && mouseY >= 10+KWADRAT*i && mouseY <=10 + KWADRAT*i+30)
- {
- return i;
- }
- }
- return 0;
- }
- void WyborFigury(LPARAM lParam)
- {
- float mouseX = LOWORD(lParam);
- float mouseY = HIWORD(lParam);
- // Rectangle (hdcOkno , 720, 500 , 762, 542); //trojkat bialy
- if (mouseX >= 720 && mouseY >=500 && mouseX <= 762 && mouseY <= 542)
- {
- Figura = TrojkatP;
- RysujTrojkatP = true;
- RysujTrojkatW = false;
- RysujElipsa = false;
- RysujKwadrat = false;
- }
- //Rectangle (hdcOkno , 762+20, 500 , 762+42+20, 542); //trojakt wypelniony
- if (mouseX >= 762+20 && mouseY >=500 && mouseX <= 762+42+20 && mouseY <= 542)
- {
- Figura = TrojkatW;
- RysujTrojkatP = false;
- RysujTrojkatW = true;
- RysujElipsa = false;
- RysujKwadrat = false;
- }
- // Rectangle (hdcOkno , 720, 500+42 + 20 , 762, 542+42+20); //elpisa
- if (mouseX >= 720 && mouseY >=500+42 + 20 && mouseX <= 762 && mouseY <= 542+42+20)
- {
- Figura = Elipsa;
- RysujTrojkatP = false;
- RysujTrojkatW = false;
- RysujElipsa = true;
- RysujKwadrat = false;
- }
- //Rectangle (hdcOkno , 762+20, 500+42+20 , 762+42+20, 542+42+20); //kwadrat
- if (mouseX >= 762+20 && mouseY >=500+42 + 20 && mouseX <= 762+42+20 && mouseY <= 542+42+20)
- {
- Figura = Kwadrat;
- RysujTrojkatP = false;
- RysujTrojkatW = false;
- RysujElipsa = false;
- RysujKwadrat = true;
- }
- }
- static LRESULT CALLBACK FunkcjaOkienkowa(HWND Okno, UINT Komunikat, WPARAM wParam, LPARAM lParam)
- {
- PAINTSTRUCT ps;
- HBRUSH Pedzel;
- HPEN Olowek;
- HDC hdcOkno;
- switch (Komunikat) {
- case WM_PAINT:
- {
- hdcOkno = BeginPaint (Okno, &ps);
- Olowek = CreatePen (PS_SOLID, 5,Kolory[9] );
- SelectObject (hdcOkno, Olowek);
- Pedzel = CreateSolidBrush ( Kolory[0] );
- SelectObject (hdcOkno, Pedzel);
- Rectangle( hdcOkno, SCREEN_WIDTH-300, 0, SCREEN_WIDTH-10, SCREEN_HIGHT );
- Olowek = CreatePen (PS_SOLID, 0,Kolory[0] );
- SelectObject (hdcOkno, Olowek);
- for (int i=1; i<10 ; i ++ )
- {
- Pedzel = CreateSolidBrush ( Kolory[i] );
- SelectObject (hdcOkno, Pedzel);
- Rectangle (hdcOkno , SCREEN_WIDTH-280, 10 + KWADRAT*i , SCREEN_WIDTH-240, 10 + KWADRAT*i+30 );
- }
- Olowek = CreatePen (PS_SOLID, 2,Kolory[11] ); //czarny
- Pedzel = CreateSolidBrush ( Kolory[10] ); // bialy
- SelectObject (hdcOkno, Pedzel);
- SelectObject (hdcOkno, Olowek);
- Rectangle (hdcOkno , 720, 500 , 762, 542); //trojkat bialy
- Rectangle (hdcOkno , 762+20, 500 , 762+42+20, 542); //trojakt wypelniony
- Rectangle (hdcOkno , 720, 500+42 + 20 , 762, 542+42+20); //elpisa
- Rectangle (hdcOkno , 762+20, 500+42+20 , 762+42+20, 542+42+20); //kwadrat
- //bialy trojkat
- POINT Trojkatpusty[ 3 ];
- Trojkatpusty[ 0 ].x = 723; Trojkatpusty[ 0 ].y = 503;
- Trojkatpusty[ 1 ].x = 757; Trojkatpusty[ 1 ].y = 503;
- Trojkatpusty[ 2 ].x = 740; Trojkatpusty[ 2 ].y = 537;
- Polygon( hdcOkno, Trojkatpusty, 3 );
- Olowek = CreatePen (PS_SOLID, 0,Kolory[10] ); //bialy
- Pedzel = CreateSolidBrush ( Kolory[11] ); // czarny
- SelectObject (hdcOkno, Pedzel);
- SelectObject (hdcOkno, Olowek);
- //trojakt wypelniony
- POINT Trojkatpelny[ 3 ];
- Trojkatpelny[ 0 ].x = 762+20+3; Trojkatpelny[ 0 ].y = 503;
- Trojkatpelny[ 1 ].x = 762+42+20-5; Trojkatpelny[ 1 ].y = 503;
- Trojkatpelny[ 2 ].x = ((762+20+3) + (762+42+20-5)) / 2; Trojkatpelny[ 2 ].y = 537;
- Polygon( hdcOkno, Trojkatpelny, 3 );
- //elipsa
- //Rectangle (hdcOkno , 720, 500+42 + 20 , 762, 542+42+20);
- Ellipse (hdcOkno, 722,500+42+18, 760,542+42+18);
- //kwadrat
- //Rectangle (hdcOkno , 762+20, 500+42+20 , 762+42+20, 542+42+20);
- Rectangle (hdcOkno, 762+22,500+42+22,762+42+18,542+42+18);
- DeleteObject (Pedzel);
- DeleteObject(Olowek);
- EndPaint (Okno,&ps);
- }
- break;
- case WM_MOUSEMOVE:
- POINT Tp[3];
- if ( !ObszarRysowania (lParam) )
- {
- WlaczRysowanie= false;
- }
- else
- {
- if(WlaczRysowanie)
- {
- HDC hdcOkno = GetDC(Okno);
- Olowek = CreatePen (PS_SOLID, 2, Kolory[RKolor] );
- Pedzel = CreateSolidBrush ( Kolory[LKolor] );
- SelectObject (hdcOkno, Pedzel);
- SelectObject (hdcOkno, Olowek);
- if (RysujTrojkatP)
- {
- Pedzel = CreateSolidBrush ( Kolory [10] ); //bialy
- SelectObject (hdcOkno, Pedzel);
- Tp[0].x = LOWORD(lParam); Tp[0].y = HIWORD(lParam);
- Tp[1].x = LOWORD(lParam) + (50 / 2); Tp[1].y = HIWORD(lParam) - 50;
- Tp[2].x = LOWORD(lParam) + 50; Tp[2].y = HIWORD(lParam);
- Polygon (hdcOkno,Tp,3);
- }
- if (RysujTrojkatW)
- {
- Tp[0].x = LOWORD(lParam); Tp[0].y = HIWORD(lParam);
- Tp[1].x = LOWORD(lParam) + (50 / 2); Tp[1].y = HIWORD(lParam) - 50;
- Tp[2].x = LOWORD(lParam) + 50; Tp[2].y = HIWORD(lParam);
- Polygon (hdcOkno,Tp,3);
- }
- if (RysujElipsa)
- {
- Ellipse (hdcOkno, LOWORD(lParam), HIWORD(lParam),LOWORD(lParam) + 100, HIWORD(lParam) + 100);
- }
- if (RysujKwadrat)
- {
- Rectangle (hdcOkno, LOWORD(lParam), HIWORD(lParam),LOWORD(lParam) + 50, HIWORD(lParam) + 50);
- }
- DeleteObject (Pedzel);
- DeleteObject (Olowek);
- ReleaseDC(Okno, hdcOkno);
- }
- }
- break;
- case WM_LBUTTONDOWN:
- if ( !ObszarRysowania (lParam) )
- {
- WlaczRysowanie= false;
- if (LKolor)
- {
- if (WyborKoloru(lParam) ) LKolor = ( WyborKoloru(lParam) );
- }
- else LKolor = WyborKoloru(lParam);
- WyborFigury(lParam);
- }
- else
- {
- WlaczRysowanie=true;
- }
- break;
- case WM_LBUTTONUP:
- WlaczRysowanie = false;
- break;
- case WM_RBUTTONDOWN:
- if ( !ObszarRysowania (lParam) )
- {
- if (RKolor)
- {
- if (WyborKoloru(lParam) ) RKolor = ( WyborKoloru(lParam) );
- }
- else RKolor = WyborKoloru(lParam);
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(Okno, Komunikat, wParam, lParam);
- }
- return 0;
- }
- static bool RejestrujKlasy()
- {
- WNDCLASSEX wc;
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.cbClsExtra = wc.cbWndExtra = 0;
- wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
- wc.hInstance = GetModuleHandle(NULL);
- wc.lpfnWndProc = &FunkcjaOkienkowa;
- wc.lpszClassName = NazwaKlasy;
- wc.lpszMenuName = NULL;
- wc.style = CS_HREDRAW | CS_VREDRAW;
- return (RegisterClassEx(&wc) != 0);
- }
- static void WyrejestrujKlasy()
- {
- UnregisterClass(NazwaKlasy, GetModuleHandle(NULL));
- }
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- // Zarejestruj klasę. Protestuj, jeżeli wystąpił błąd.
- if (!RejestrujKlasy())
- {
- MessageBox(NULL, TEXT("Nie udało się zarejestrować klasy okna!"), NazwaAplikacji, MB_ICONSTOP | MB_OK);
- return 1;
- }
- // Stwórz główne okno. Również protestuj, jeżeli wystąpił błąd.
- HWND hwnd = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_CLIENTEDGE, NazwaKlasy, TEXT("Okno"), WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, SCREEN_WIDTH, SCREEN_HIGHT, NULL, NULL, hInstance, NULL);
- if (hwnd == NULL)
- {
- MessageBox(NULL, TEXT("Nie udało się stworzyć głównego okna!"), NazwaAplikacji, MB_ICONSTOP | MB_OK);
- return 2;
- }
- // Wyświetl i uaktualnij nowo stworzone okno.
- ShowWindow(hwnd, nCmdShow);
- UpdateWindow(hwnd);
- // Główna pętla komunikatów wątku.
- MSG Komunikat;
- while (GetMessage(&Komunikat, NULL, 0, 0) > 0)
- {
- TranslateMessage(&Komunikat);
- DispatchMessage(&Komunikat);
- }
- // Zwolnij pamięć klas i zakończ proces.
- WyrejestrujKlasy();
- return 0;
- }
Advertisement