Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.91 KB | None | 0 0
  1. /************************************************************
  2.  * -- NIE USUWAJ TEJ INFORMACJI Z PROGRAMU ---------------- *
  3.  ************************************************************
  4.  * -- Program powstał na bazie kodu źródłowego ------------ *
  5.  * -- udostępnionego studentom na potrzeby przedmiotu ----- *
  6.  * -- Programowanie Interfejsu Użytkownika ---------------- *
  7.  * -- Copyright (c) 2009 Politechnika Śląska w Gliwicach -- *
  8.  * -- Radosław Sokół, Wydział Elektryczny ----------------- *
  9.  ************************************************************/
  10.  
  11. #include <windows.h>
  12.  
  13. TCHAR NazwaAplikacji[] = TEXT("Aplikacja studencka");
  14. TCHAR NazwaKlasy[] = TEXT("OKNOGLOWNE");
  15.  
  16. class Statek{
  17. private:
  18. public:
  19.     RECT wymiar;   
  20.     int x,y; //polozenie
  21.     int zwrot; // zwrot 1 na lewo 2 na prawo
  22.     void Rysuj(const HDC DC);
  23.     void Przesun(const int dx,const int dy);
  24.     bool Kolizja(const Statek&);
  25.     //Statek(){};
  26.     Statek(int px,int py,int zw):
  27.     x(px),
  28.         y(py),
  29.         zwrot(zw)
  30.     {};
  31.    
  32. };
  33. void Statek::Przesun(const int dx,const int dy){
  34.     x+=dx;
  35.     y+=dy;
  36. }
  37. void Statek::Rysuj(const HDC DC){
  38.     HPEN pioro = CreatePen(PS_SOLID,0,RGB(2,222,22));
  39.     HBRUSH pedzel = CreateSolidBrush(RGB(1,11,111));   
  40.    
  41.     POINT punkty[5];
  42.     punkty[0].x = 20;
  43.     punkty[0].y = 30;
  44.     punkty[1].x = 20;
  45.     punkty[1].y = 60;
  46.     punkty[2].x = 60;
  47.     punkty[2].y = 70;
  48.     punkty[3].x = 60;
  49.     punkty[3].y = 20;
  50.     punkty[4].x = 20;
  51.     punkty[4].y = 30;
  52.     SelectObject(DC,pioro);
  53.     SelectObject(DC,pedzel);
  54.     Rectangle(DC,x,y,x+10,y+10);
  55.    
  56.  
  57. }
  58.    
  59.  
  60. static LRESULT CALLBACK FunkcjaOkienkowa(HWND Okno, UINT Komunikat, WPARAM wParam, LPARAM lParam)
  61. {
  62.    
  63.     Statek uss_enterprise(20,20,2);
  64.     PAINTSTRUCT ps;
  65.     HDC hdc;
  66.     RECT R;
  67.    
  68.  
  69.     switch (Komunikat) {
  70.    
  71.     case WM_PAINT:
  72.             GetClientRect(Okno,&R);
  73.             hdc = BeginPaint(Okno,&ps);
  74.             uss_enterprise.Rysuj(hdc);         
  75.             EndPaint(Okno,&ps);
  76.             break;
  77.     case WM_LBUTTONDOWN:
  78.             uss_enterprise.Przesun(10,10);
  79.             GetClientRect(Okno,&R);    
  80.             InvalidateRect(Okno,&R,true);
  81.             break;         
  82.     case WM_DESTROY:
  83.             PostQuitMessage(0);
  84.             break;
  85.  
  86.         default:
  87.             return DefWindowProc(Okno, Komunikat, wParam, lParam);
  88.     }
  89.     return 0;
  90. }
  91.  
  92. static bool RejestrujKlasy()
  93. {
  94.     WNDCLASSEX wc;
  95.     wc.cbSize = sizeof(WNDCLASSEX);
  96.     wc.cbClsExtra = wc.cbWndExtra = 0;
  97.     wc.hbrBackground = (HBRUSH) (1 + COLOR_WINDOW);
  98.     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  99.     wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  100.     wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  101.     wc.hInstance = GetModuleHandle(NULL);
  102.     wc.lpfnWndProc = &FunkcjaOkienkowa;
  103.     wc.lpszClassName = NazwaKlasy;
  104.     wc.lpszMenuName = NULL;
  105.     wc.style = 0;
  106.     return (RegisterClassEx(&wc) != 0);
  107. }
  108.  
  109. static void WyrejestrujKlasy()
  110. {
  111.     UnregisterClass(NazwaKlasy, GetModuleHandle(NULL));
  112. }
  113.  
  114. int WINAPI WinMain(HINSTANCE Instancja, HINSTANCE Poprzednia, LPSTR Parametry, int Widocznosc)
  115. {
  116.     Statek uss_enterprise(20,20,2);
  117.     // Zarejestruj klasę. Protestuj, jeżeli wystąpił błąd.
  118.     if (!RejestrujKlasy()) {
  119.         MessageBox(NULL, TEXT("Nie udało się zarejestrować klasy okna!"),
  120.             NazwaAplikacji, MB_ICONSTOP | MB_OK);
  121.         return 1;
  122.     }
  123.     // Stwórz główne okno. Również protestuj, jeżeli wystąpił błąd.
  124.     HWND GlowneOkno = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_CLIENTEDGE,
  125.         NazwaKlasy, TEXT("Okno"), WS_OVERLAPPEDWINDOW,
  126.         CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  127.         NULL, NULL, Instancja, NULL);
  128.     if (GlowneOkno == NULL) {
  129.         MessageBox(NULL, TEXT("Nie udało się stworzyć głównego okna!"),
  130.             NazwaAplikacji, MB_ICONSTOP | MB_OK);
  131.         return 2;
  132.     }
  133.    
  134.     // Wyświetl i uaktualnij nowo stworzone okno.
  135.     ShowWindow(GlowneOkno, Widocznosc);
  136.     UpdateWindow(GlowneOkno);
  137.     // Główna pętla komunikatów wątku.
  138.     MSG Komunikat;
  139.     while (GetMessage(&Komunikat, NULL, 0, 0) > 0) {
  140.         TranslateMessage(&Komunikat);
  141.         DispatchMessage(&Komunikat);
  142.     }
  143.     // Zwolnij pamięć klas i zakończ proces.
  144.     WyrejestrujKlasy();
  145.     return static_cast<int>(Komunikat.wParam);
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement