Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. const char* NazwaKlasy = TEXT("Klasa Okienka");
  5. MSG Komunikat;
  6.  
  7. HWND b, rb1, rb2, ef, sf, l, cb;
  8.  
  9. // OBSŁUGA ZDARZEŃ
  10. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  11. {
  12. switch (msg)
  13. {
  14. case WM_CREATE:
  15. b = CreateWindowEx(0, "BUTTON", "Button", WS_CHILD | WS_VISIBLE, 100, 100, 100, 30, hwnd, NULL, NULL, NULL);
  16. rb1 = CreateWindowEx(0, "BUTTON", "Radiobutton 1", WS_CHILD | BS_AUTORADIOBUTTON | WS_VISIBLE, 100, 140, 100, 30, hwnd, NULL, NULL, NULL);
  17. rb2 = CreateWindowEx(0, "BUTTON", "Radiobutton 2", WS_CHILD | BS_AUTORADIOBUTTON | WS_VISIBLE, 100, 180, 100, 30, hwnd, NULL, NULL, NULL);
  18. ef = CreateWindowEx(0, "EDIT", "FILL ME", WS_CHILD | WS_VISIBLE, 100, 220, 150, 30, hwnd, NULL, NULL, NULL);
  19. sf = CreateWindowEx(0, "STATIC", "STATIC", WS_CHILD | WS_VISIBLE, 100, 260, 150, 30, hwnd, NULL, NULL, NULL);
  20. l = CreateWindowEx(0, "LISTBOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_NOTIFY, 100, 300, 300, 50, hwnd, NULL, NULL, NULL);
  21. // ^
  22. // |
  23. // w chuj important bo inaczej nie wykryje LBN_SELCHANGE
  24.  
  25. //SendMessage(l, LB_SETCURSEL, (WPARAM)1, (LPARAM)0); <-- ustawia 1 element
  26.  
  27. // Zamiast hwnd w 1 argumencie można GetDlgItem(hwnd okna, hmenu)
  28. SendMessage(l, LB_ADDSTRING, 0, (LPARAM)"List #1");
  29. SendMessage(l, LB_ADDSTRING, 0, (LPARAM)"List #2");
  30. SendMessage(l, LB_ADDSTRING, 0, (LPARAM)"List #3");
  31.  
  32. // jak za mało to nigdy elementów nie zobaczysz
  33. // lepiej dac liczbę z kosmosu niz za mala
  34. // |
  35. // v
  36. cb = CreateWindowEx(0, "COMBOBOX", NULL, CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE, 100, 390, 120, 100, hwnd, NULL, NULL, NULL);
  37.  
  38. // inaczej niż w liście można albo nawiasik albo TEXT()
  39. // | |
  40. // v v
  41. SendMessage(cb, CB_ADDSTRING, 0, (LPARAM)TEXT("Combobox #1"));
  42. SendMessage(cb, CB_ADDSTRING, 0, (LPARAM)TEXT("Combobox #2"));
  43. SendMessage(cb, CB_ADDSTRING, 0, (LPARAM)TEXT("Combobox #3"));
  44.  
  45. //SendMessage(cb, CB_SETCURSEL, (WPARAM)1, (LPARAM)0); <-- ustawia 1 element
  46. break;
  47. case WM_COMMAND:
  48. if ((HWND)lParam == b)
  49. {
  50. SetWindowText(sf, TEXT("Button"));
  51. }
  52. else if ((HWND)lParam == rb1)
  53. {
  54. SetWindowText(sf, TEXT("Radiobutton #1"));
  55. }
  56. else if ((HWND)lParam == rb2)
  57. {
  58. SetWindowText(sf, TEXT("Radiobutton #2"));
  59. }
  60. else if ((HWND)lParam == ef)
  61. {
  62. // GetWindowTextLength i GlobalAlloc są dla leszczy
  63. char s[50];
  64. GetWindowText(ef, s, 50);
  65. SetWindowText(sf, s);
  66. }
  67. else if ((HWND)lParam == l)
  68. {
  69. if (HIWORD(wParam) == LBN_SELCHANGE)
  70. {
  71. int index = (int)SendMessage(l, LB_GETCURSEL, (WPARAM)0, (LPARAM)0);
  72. if (index == LB_ERR)
  73. {
  74. MessageBox(hwnd, TEXT("Kliknij co"), TEXT(":C"), NULL);
  75. return 0;
  76. }
  77. TCHAR buf[50] = { 0 };
  78. SendMessage(l, LB_GETTEXT, index, (LPARAM)buf);
  79. SetWindowText(sf, buf);
  80. }
  81. }
  82. else if ((HWND)lParam == cb)
  83. {
  84. if (HIWORD(wParam) == CBN_SELCHANGE)
  85. {
  86. int index = (int)SendMessage(cb, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
  87. if (index == CB_ERR)
  88. {
  89. MessageBox(hwnd, TEXT("Kliknij co"), TEXT(":C"), NULL);
  90. return 0;
  91. }
  92. TCHAR buf[50] = { 0 };
  93. SendMessage(cb, CB_GETLBTEXT, index, (LPARAM)buf);
  94. SetWindowText(sf, buf);
  95. }
  96. else
  97. {
  98. char s[50];
  99. GetWindowText(cb, s, 50);
  100. SetWindowText(sf, s);
  101. }
  102. }
  103. break;
  104. case WM_DESTROY:
  105. PostQuitMessage(0);
  106. break;
  107. default:
  108. return DefWindowProc(hwnd, msg, wParam, lParam);
  109. }
  110.  
  111. return 0;
  112. }
  113.  
  114. int WINAPI WinMain(HINSTANCE hInstance,
  115. HINSTANCE hPrevInstance,
  116. LPSTR lpCmdLine,
  117. int nCmdShow)
  118. {
  119.  
  120.  
  121. // WYPEŁNIANIE STRUKTURY
  122. WNDCLASSEX wc;
  123.  
  124. wc.cbSize = sizeof(WNDCLASSEX);
  125. wc.style = CS_VREDRAW | CS_HREDRAW; // Dzięki temu rysuje się jeszcze raz
  126. wc.lpfnWndProc = WndProc;
  127. wc.cbClsExtra = 0;
  128. wc.cbWndExtra = 0;
  129. wc.hInstance = hInstance;
  130. wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  131. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  132. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  133. wc.lpszMenuName = NULL;
  134. wc.lpszClassName = NazwaKlasy;
  135. wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  136.  
  137.  
  138. // REJESTROWANIE KLASY OKNA
  139. if (!RegisterClassEx(&wc))
  140. {
  141. MessageBox(NULL, TEXT("Nie przeszło rejestracji"), TEXT("..."),
  142. MB_ICONEXCLAMATION | MB_OK);
  143. return 1;
  144. }
  145.  
  146.  
  147. // TWORZENIE OKNA
  148. HWND hwnd;
  149.  
  150. hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, NazwaKlasy, TEXT("Oto okienko"), WS_OVERLAPPEDWINDOW,
  151. CW_USEDEFAULT, CW_USEDEFAULT, 450, 600, NULL, NULL, hInstance, NULL);
  152.  
  153. if (hwnd == NULL)
  154. {
  155. MessageBox(NULL, TEXT("Ni ma okna"), TEXT("..."), MB_ICONEXCLAMATION);
  156. return 1;
  157. }
  158.  
  159. ShowWindow(hwnd, nCmdShow); // Pokaż okienko...
  160. UpdateWindow(hwnd);
  161.  
  162. // Pętla komunikatów
  163. while (GetMessage(&Komunikat, NULL, 0, 0))
  164. {
  165. TranslateMessage(&Komunikat);
  166. DispatchMessage(&Komunikat);
  167. }
  168.  
  169. return Komunikat.wParam;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement