VEndymionV

Untitled

Dec 2nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.60 KB | None | 0 0
  1. #include <windows.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #include <tchar.h>  
  5. #include "Zwierze.h"
  6. // Zmienne globalne:
  7. MSG Komunikat; // Komunikaty od systemu.
  8. HWND g_hPrzycisk; // Globalny uchwyt na przycisk.
  9. HWND hText; // Uchwyt na tekst.
  10.  
  11. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  12.  
  13. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  14. {
  15.     /*
  16. #pragma region Dwa proste okienka
  17.     if (MessageBox(NULL, "To jest wiadomość.", "Wiadomość", MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON2) == IDOK)
  18.     {
  19.         MessageBox(NULL, "Wybrałeś przycisk OK!", "Super", MB_OK);
  20.     }
  21.     else
  22.     {
  23.         MessageBox(NULL, "Wybrałeś przycisk Anuluj!", "Słabo", MB_OK);
  24.     }
  25. #pragma endregion
  26. */
  27.  
  28. #pragma region Okno
  29.     LPSTR NazwaKlasy = "Klasa Okienka";
  30.  
  31.     WNDCLASSEX wc; // Nazwa klasy.
  32.  
  33.     wc.cbSize = sizeof(WNDCLASSEX); // Rozmiar struktury w bajtach.
  34.     wc.style = 0; // Styl klasy.
  35.     wc.lpfnWndProc = WndProc; // Wskaźnik do procedury obsługującej okno.
  36.     wc.cbClsExtra = 0; // Dodatkowe bajty pamięci dla klasy.
  37.     wc.cbWndExtra = 0; // Dodatkowe bajty pamięci dla klasy.
  38.     wc.hInstance = hInstance; // Identyfikator aplikacji, która ma być włascicielem okna..
  39.     wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // Ikona okna.
  40.     // LoadIcon - ładuje ikonkę.
  41.     wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Kursor myszki.
  42.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // Tło okna, kolor i wzór.
  43.     wc.lpszMenuName = NULL; // Nazwa identyfikująca menu naszego okna w pliku zasobów.
  44.     wc.lpszClassName = NazwaKlasy; // Nazwa klasy którą tworzymy.
  45.     wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // Mała ikonka aplikacji.
  46.  
  47.     if (!RegisterClassEx(&wc))
  48.     {
  49.         MessageBox(NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
  50.             MB_ICONEXCLAMATION | MB_OK);
  51.         return 1;
  52.     }
  53.  
  54.     HWND hwnd;
  55.  
  56.     hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW,
  57.         CW_USEDEFAULT, CW_USEDEFAULT, 480, 240, NULL, NULL, hInstance, NULL);
  58.     /*
  59.     CreateWindowEx( dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight,
  60.                     hWndParent, hMenu, hInstance, lpParam )
  61.     dwExStyle - Rozszerzone parametry stylu okna
  62.     lpClassName - Nazwa klasy okna, którą właśnie zarejestrowaliśmy
  63.     lpWindowName - Napis na pasku tytułowym okienka
  64.     dwStyle - "Zwykłe" style okienka (WS_)
  65.     x, y - Pozycja okna. Można ustawić na CW_USEDEFAULT, czyli na domyślną pozycję
  66.     nWidth, nHeight - Wymiary okienka.
  67.     hWndParent - Uchwyt okna rodzicielskiego (nadrzędnego). Zwykle takowe nie istnieje, więc dajemy NULL
  68.     hMenu - Uchwyt menu dla naszego okna. Na razie żadnego nie mamy, więc NULL
  69.     hInstance -Uchwyt aplikacji, której przypisujemy okienko. Dajemy parametr hInstance, otrzymany od systemu jako argument dla WinMain
  70.     lpParam  - Wskaźnik do dodatkowych parametrów
  71.     */
  72.     if (hwnd == NULL)
  73.     {
  74.         MessageBox(NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION);
  75.         return 1;
  76.     }
  77. #pragma endregion
  78.  
  79. #pragma region Przycisk
  80.     /*
  81.     BS_CHECKBOX - checkbox
  82.     BS_RADIOBUTTON - przycisk radiowy (okrągły)
  83.     BS_GROUPBOX - ramka grupujący
  84.     */
  85.     g_hPrzycisk = CreateWindowEx(0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE,
  86.         200, 150, 150, 30, hwnd, NULL, hInstance, NULL);
  87. #pragma endregion
  88.  
  89. #pragma region Pole_tekstowe
  90.     // Proste pole tekstowe:
  91.     //HWND hText = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 50, 150, 30,
  92.     //  hwnd, NULL, hInstance, NULL);
  93.     // Pole tekstowe na wiele linii (notatnik):
  94. //  hText = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
  95. //      WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 5, 5, 150, 150, hwnd, NULL, hInstance, NULL);
  96. //  SetWindowText(hText, "...");
  97. #pragma endregion
  98. //  HWND hCombo = CreateWindowEx(WS_EX_CLIENTEDGE, "BOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  99. //      50, 50, 150, 200, hwnd, NULL, hInstance, NULL);
  100.    
  101.     Zwierze zwierze1;
  102.     zwierze1.wyswietl(hwnd, hInstance, "Info");
  103.     ShowWindow(hwnd, nCmdShow); // Okno staje się widoczne.
  104.     UpdateWindow(hwnd); // Upewnienie, że okno zostało poprawie narysowane.
  105.  
  106.     while (GetMessage(&Komunikat, NULL, 0, 0)) // Obsługa komunikatów systemu.
  107.     {
  108.         TranslateMessage(&Komunikat);
  109.         DispatchMessage(&Komunikat);
  110.     }
  111.     return Komunikat.wParam;
  112.  
  113.     return 0;
  114. }
  115. // Funkcja obsługuje komunikaty systemu, czyli reakcje na wciskanie różnych klawiszy.
  116. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  117. {
  118.     switch (msg)
  119.     {
  120.        
  121.     case WM_CLOSE: // Zamknięcie okna.
  122.         if (MessageBox(NULL, "Czy na pewno chcesz zamknąć okno?", "UWAGA!", MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON2) == IDOK)
  123.         {
  124.             MessageBox(NULL, "Zamykam okno.", "UWAGA!", MB_OK);
  125.             DestroyWindow(hwnd); // Niszczy okno.
  126.         }
  127.         else
  128.         {
  129.             MessageBox(NULL, "Wybrałeś przycisk Anuluj!", "UWAGA!", MB_OK);
  130.         }
  131.         break;
  132.  
  133.     case WM_DESTROY: // Reaguje na komunikat niszczenia okna.
  134.         PostQuitMessage(0); // Kończy działanie aplikacji.
  135.         break;
  136.        
  137.     case WM_COMMAND:
  138.         // Sprawdza czy naciśnięty został przycisk g_hPRzycisk
  139.         if ((HWND)lParam == g_hPrzycisk)
  140.         {
  141.             DWORD dlugosc = GetWindowTextLength(hText);
  142.             LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, dlugosc + 1);
  143.             GetWindowText(hText, Bufor, dlugosc + 1);
  144.  
  145.             MessageBox(hwnd, Bufor, "To co wpiszesz", MB_ICONINFORMATION);
  146.             GlobalFree(Bufor);
  147.             //MessageBox(hwnd, "Nacisnąłeś przycisk g_hPrzycisk!", "Ha!", MB_ICONINFORMATION);
  148.         }
  149.         break;
  150.  
  151.     // Pozostałe komunikaty (domyślna obsługa):
  152.     default:
  153.         return DefWindowProc(hwnd, msg, wParam, lParam);
  154.     }
  155.  
  156.     return 0;
  157. }
Add Comment
Please, Sign In to add comment