Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdlib.h>
- #include <string.h>
- #include <tchar.h>
- #include "Zwierze.h"
- // Zmienne globalne:
- MSG Komunikat; // Komunikaty od systemu.
- HWND g_hPrzycisk; // Globalny uchwyt na przycisk.
- HWND hText; // Uchwyt na tekst.
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- /*
- #pragma region Dwa proste okienka
- if (MessageBox(NULL, "To jest wiadomość.", "Wiadomość", MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON2) == IDOK)
- {
- MessageBox(NULL, "Wybrałeś przycisk OK!", "Super", MB_OK);
- }
- else
- {
- MessageBox(NULL, "Wybrałeś przycisk Anuluj!", "Słabo", MB_OK);
- }
- #pragma endregion
- */
- #pragma region Okno
- LPSTR NazwaKlasy = "Klasa Okienka";
- WNDCLASSEX wc; // Nazwa klasy.
- wc.cbSize = sizeof(WNDCLASSEX); // Rozmiar struktury w bajtach.
- wc.style = 0; // Styl klasy.
- wc.lpfnWndProc = WndProc; // Wskaźnik do procedury obsługującej okno.
- wc.cbClsExtra = 0; // Dodatkowe bajty pamięci dla klasy.
- wc.cbWndExtra = 0; // Dodatkowe bajty pamięci dla klasy.
- wc.hInstance = hInstance; // Identyfikator aplikacji, która ma być włascicielem okna..
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // Ikona okna.
- // LoadIcon - ładuje ikonkę.
- wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Kursor myszki.
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // Tło okna, kolor i wzór.
- wc.lpszMenuName = NULL; // Nazwa identyfikująca menu naszego okna w pliku zasobów.
- wc.lpszClassName = NazwaKlasy; // Nazwa klasy którą tworzymy.
- wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // Mała ikonka aplikacji.
- if (!RegisterClassEx(&wc))
- {
- MessageBox(NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
- MB_ICONEXCLAMATION | MB_OK);
- return 1;
- }
- HWND hwnd;
- hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, 480, 240, NULL, NULL, hInstance, NULL);
- /*
- CreateWindowEx( dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight,
- hWndParent, hMenu, hInstance, lpParam )
- dwExStyle - Rozszerzone parametry stylu okna
- lpClassName - Nazwa klasy okna, którą właśnie zarejestrowaliśmy
- lpWindowName - Napis na pasku tytułowym okienka
- dwStyle - "Zwykłe" style okienka (WS_)
- x, y - Pozycja okna. Można ustawić na CW_USEDEFAULT, czyli na domyślną pozycję
- nWidth, nHeight - Wymiary okienka.
- hWndParent - Uchwyt okna rodzicielskiego (nadrzędnego). Zwykle takowe nie istnieje, więc dajemy NULL
- hMenu - Uchwyt menu dla naszego okna. Na razie żadnego nie mamy, więc NULL
- hInstance -Uchwyt aplikacji, której przypisujemy okienko. Dajemy parametr hInstance, otrzymany od systemu jako argument dla WinMain
- lpParam - Wskaźnik do dodatkowych parametrów
- */
- if (hwnd == NULL)
- {
- MessageBox(NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION);
- return 1;
- }
- #pragma endregion
- #pragma region Przycisk
- /*
- BS_CHECKBOX - checkbox
- BS_RADIOBUTTON - przycisk radiowy (okrągły)
- BS_GROUPBOX - ramka grupujący
- */
- g_hPrzycisk = CreateWindowEx(0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE,
- 200, 150, 150, 30, hwnd, NULL, hInstance, NULL);
- #pragma endregion
- #pragma region Pole_tekstowe
- // Proste pole tekstowe:
- //HWND hText = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 50, 150, 30,
- // hwnd, NULL, hInstance, NULL);
- // Pole tekstowe na wiele linii (notatnik):
- // hText = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
- // WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 5, 5, 150, 150, hwnd, NULL, hInstance, NULL);
- // SetWindowText(hText, "...");
- #pragma endregion
- // HWND hCombo = CreateWindowEx(WS_EX_CLIENTEDGE, "BOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
- // 50, 50, 150, 200, hwnd, NULL, hInstance, NULL);
- Zwierze zwierze1;
- zwierze1.wyswietl(hwnd, hInstance, "Info");
- ShowWindow(hwnd, nCmdShow); // Okno staje się widoczne.
- UpdateWindow(hwnd); // Upewnienie, że okno zostało poprawie narysowane.
- while (GetMessage(&Komunikat, NULL, 0, 0)) // Obsługa komunikatów systemu.
- {
- TranslateMessage(&Komunikat);
- DispatchMessage(&Komunikat);
- }
- return Komunikat.wParam;
- return 0;
- }
- // Funkcja obsługuje komunikaty systemu, czyli reakcje na wciskanie różnych klawiszy.
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- switch (msg)
- {
- case WM_CLOSE: // Zamknięcie okna.
- if (MessageBox(NULL, "Czy na pewno chcesz zamknąć okno?", "UWAGA!", MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON2) == IDOK)
- {
- MessageBox(NULL, "Zamykam okno.", "UWAGA!", MB_OK);
- DestroyWindow(hwnd); // Niszczy okno.
- }
- else
- {
- MessageBox(NULL, "Wybrałeś przycisk Anuluj!", "UWAGA!", MB_OK);
- }
- break;
- case WM_DESTROY: // Reaguje na komunikat niszczenia okna.
- PostQuitMessage(0); // Kończy działanie aplikacji.
- break;
- case WM_COMMAND:
- // Sprawdza czy naciśnięty został przycisk g_hPRzycisk
- if ((HWND)lParam == g_hPrzycisk)
- {
- DWORD dlugosc = GetWindowTextLength(hText);
- LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, dlugosc + 1);
- GetWindowText(hText, Bufor, dlugosc + 1);
- MessageBox(hwnd, Bufor, "To co wpiszesz", MB_ICONINFORMATION);
- GlobalFree(Bufor);
- //MessageBox(hwnd, "Nacisnąłeś przycisk g_hPrzycisk!", "Ha!", MB_ICONINFORMATION);
- }
- break;
- // Pozostałe komunikaty (domyślna obsługa):
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment