Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- const char* NazwaKlasy = TEXT("Klasa Okienka");
- MSG Komunikat;
- HWND b, rb1, rb2, ef, sf, l, cb;
- // OBSŁUGA ZDARZEŃ
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- switch (msg)
- {
- case WM_CREATE:
- b = CreateWindowEx(0, "BUTTON", "Button", WS_CHILD | WS_VISIBLE, 100, 100, 100, 30, hwnd, NULL, NULL, NULL);
- rb1 = CreateWindowEx(0, "BUTTON", "Radiobutton 1", WS_CHILD | BS_AUTORADIOBUTTON | WS_VISIBLE, 100, 140, 100, 30, hwnd, NULL, NULL, NULL);
- rb2 = CreateWindowEx(0, "BUTTON", "Radiobutton 2", WS_CHILD | BS_AUTORADIOBUTTON | WS_VISIBLE, 100, 180, 100, 30, hwnd, NULL, NULL, NULL);
- ef = CreateWindowEx(0, "EDIT", "FILL ME", WS_CHILD | WS_VISIBLE, 100, 220, 150, 30, hwnd, NULL, NULL, NULL);
- sf = CreateWindowEx(0, "STATIC", "STATIC", WS_CHILD | WS_VISIBLE, 100, 260, 150, 30, hwnd, NULL, NULL, NULL);
- l = CreateWindowEx(0, "LISTBOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_NOTIFY, 100, 300, 300, 50, hwnd, NULL, NULL, NULL);
- // ^
- // |
- // w chuj important bo inaczej nie wykryje LBN_SELCHANGE
- //SendMessage(l, LB_SETCURSEL, (WPARAM)1, (LPARAM)0); <-- ustawia 1 element
- // Zamiast hwnd w 1 argumencie można GetDlgItem(hwnd okna, hmenu)
- SendMessage(l, LB_ADDSTRING, 0, (LPARAM)"List #1");
- SendMessage(l, LB_ADDSTRING, 0, (LPARAM)"List #2");
- SendMessage(l, LB_ADDSTRING, 0, (LPARAM)"List #3");
- // jak za mało to nigdy elementów nie zobaczysz
- // lepiej dac liczbę z kosmosu niz za mala
- // |
- // v
- cb = CreateWindowEx(0, "COMBOBOX", NULL, CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE, 100, 390, 120, 100, hwnd, NULL, NULL, NULL);
- // inaczej niż w liście można albo nawiasik albo TEXT()
- // | |
- // v v
- SendMessage(cb, CB_ADDSTRING, 0, (LPARAM)TEXT("Combobox #1"));
- SendMessage(cb, CB_ADDSTRING, 0, (LPARAM)TEXT("Combobox #2"));
- SendMessage(cb, CB_ADDSTRING, 0, (LPARAM)TEXT("Combobox #3"));
- //SendMessage(cb, CB_SETCURSEL, (WPARAM)1, (LPARAM)0); <-- ustawia 1 element
- break;
- case WM_COMMAND:
- if ((HWND)lParam == b)
- {
- SetWindowText(sf, TEXT("Button"));
- }
- else if ((HWND)lParam == rb1)
- {
- SetWindowText(sf, TEXT("Radiobutton #1"));
- }
- else if ((HWND)lParam == rb2)
- {
- SetWindowText(sf, TEXT("Radiobutton #2"));
- }
- else if ((HWND)lParam == ef)
- {
- // GetWindowTextLength i GlobalAlloc są dla leszczy
- char s[50];
- GetWindowText(ef, s, 50);
- SetWindowText(sf, s);
- }
- else if ((HWND)lParam == l)
- {
- if (HIWORD(wParam) == LBN_SELCHANGE)
- {
- int index = (int)SendMessage(l, LB_GETCURSEL, (WPARAM)0, (LPARAM)0);
- if (index == LB_ERR)
- {
- MessageBox(hwnd, TEXT("Kliknij co"), TEXT(":C"), NULL);
- return 0;
- }
- TCHAR buf[50] = { 0 };
- SendMessage(l, LB_GETTEXT, index, (LPARAM)buf);
- SetWindowText(sf, buf);
- }
- }
- else if ((HWND)lParam == cb)
- {
- if (HIWORD(wParam) == CBN_SELCHANGE)
- {
- int index = (int)SendMessage(cb, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
- if (index == CB_ERR)
- {
- MessageBox(hwnd, TEXT("Kliknij co"), TEXT(":C"), NULL);
- return 0;
- }
- TCHAR buf[50] = { 0 };
- SendMessage(cb, CB_GETLBTEXT, index, (LPARAM)buf);
- SetWindowText(sf, buf);
- }
- else
- {
- char s[50];
- GetWindowText(cb, s, 50);
- SetWindowText(sf, s);
- }
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
- int WINAPI WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
- {
- // WYPEŁNIANIE STRUKTURY
- WNDCLASSEX wc;
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = CS_VREDRAW | CS_HREDRAW; // Dzięki temu rysuje się jeszcze raz
- wc.lpfnWndProc = WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = NazwaKlasy;
- wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
- // REJESTROWANIE KLASY OKNA
- if (!RegisterClassEx(&wc))
- {
- MessageBox(NULL, TEXT("Nie przeszło rejestracji"), TEXT("..."),
- MB_ICONEXCLAMATION | MB_OK);
- return 1;
- }
- // TWORZENIE OKNA
- HWND hwnd;
- hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, NazwaKlasy, TEXT("Oto okienko"), WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, 450, 600, NULL, NULL, hInstance, NULL);
- if (hwnd == NULL)
- {
- MessageBox(NULL, TEXT("Ni ma okna"), TEXT("..."), MB_ICONEXCLAMATION);
- return 1;
- }
- ShowWindow(hwnd, nCmdShow); // Pokaż okienko...
- UpdateWindow(hwnd);
- // Pętla komunikatów
- while (GetMessage(&Komunikat, NULL, 0, 0))
- {
- TranslateMessage(&Komunikat);
- DispatchMessage(&Komunikat);
- }
- return Komunikat.wParam;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement