Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************************************************
- * -- NIE USUWAJ TEJ INFORMACJI Z PROGRAMU ---------------- *
- ************************************************************
- * -- Program powstał na bazie kodu źródłowego ------------ *
- * -- udostępnionego studentom na potrzeby przedmiotu ----- *
- * -- Programowanie Interfejsu Użytkownika ---------------- *
- * -- Copyright (c) 2009 Politechnika Śląska w Gliwicach -- *
- * -- Radosław Sokół, Wydział Elektryczny ----------------- *
- ************************************************************/
- #include <windows.h>
- TCHAR NazwaAplikacji[] = TEXT("Aplikacja studencka");
- TCHAR NazwaKlasy[] = TEXT("OKNOGLOWNE");
- class Statek{
- private:
- public:
- RECT wymiar;
- int x,y; //polozenie
- int zwrot; // zwrot 1 na lewo 2 na prawo
- void Rysuj(const HDC DC);
- void Przesun(const int dx,const int dy);
- bool Kolizja(const Statek&);
- //Statek(){};
- Statek(int px,int py,int zw):
- x(px),
- y(py),
- zwrot(zw)
- {};
- };
- void Statek::Przesun(const int dx,const int dy){
- x+=dx;
- y+=dy;
- }
- void Statek::Rysuj(const HDC DC){
- HPEN pioro = CreatePen(PS_SOLID,0,RGB(2,222,22));
- HBRUSH pedzel = CreateSolidBrush(RGB(1,11,111));
- POINT punkty[5];
- punkty[0].x = 20;
- punkty[0].y = 30;
- punkty[1].x = 20;
- punkty[1].y = 60;
- punkty[2].x = 60;
- punkty[2].y = 70;
- punkty[3].x = 60;
- punkty[3].y = 20;
- punkty[4].x = 20;
- punkty[4].y = 30;
- SelectObject(DC,pioro);
- SelectObject(DC,pedzel);
- Rectangle(DC,x,y,x+10,y+10);
- }
- static LRESULT CALLBACK FunkcjaOkienkowa(HWND Okno, UINT Komunikat, WPARAM wParam, LPARAM lParam)
- {
- Statek uss_enterprise(20,20,2);
- PAINTSTRUCT ps;
- HDC hdc;
- RECT R;
- switch (Komunikat) {
- case WM_PAINT:
- GetClientRect(Okno,&R);
- hdc = BeginPaint(Okno,&ps);
- uss_enterprise.Rysuj(hdc);
- EndPaint(Okno,&ps);
- break;
- case WM_LBUTTONDOWN:
- uss_enterprise.Przesun(10,10);
- GetClientRect(Okno,&R);
- InvalidateRect(Okno,&R,true);
- 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) (1 + COLOR_WINDOW);
- 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 = 0;
- return (RegisterClassEx(&wc) != 0);
- }
- static void WyrejestrujKlasy()
- {
- UnregisterClass(NazwaKlasy, GetModuleHandle(NULL));
- }
- int WINAPI WinMain(HINSTANCE Instancja, HINSTANCE Poprzednia, LPSTR Parametry, int Widocznosc)
- {
- Statek uss_enterprise(20,20,2);
- // 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 GlowneOkno = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_CLIENTEDGE,
- NazwaKlasy, TEXT("Okno"), WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- NULL, NULL, Instancja, NULL);
- if (GlowneOkno == 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(GlowneOkno, Widocznosc);
- UpdateWindow(GlowneOkno);
- // 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 static_cast<int>(Komunikat.wParam);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement