Advertisement
peterzig

[PIU] DialogBox 3Button

Dec 3rd, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.58 KB | None | 0 0
  1. //////resource.rc////////
  2. // Dialog
  3. //
  4. #include <windows.h>
  5. #include "resource.h"
  6.  
  7. IDD_PASEK DIALOGEX 0, 0, 98, 102
  8. STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
  9. EXSTYLE WS_EX_TOOLWINDOW
  10. CAPTION "Mój pasek narzędzi"
  11. FONT 8, "MS Sans Serif"
  12. {
  13.     PUSHBUTTON "&Pierwszy przycisk", IDC_PRZYC1, 7, 7, 84, 14
  14.         PUSHBUTTON "&Drugi przycisk", IDC_PRZYC2, 7, 31, 84, 14
  15.         PUSHBUTTON "&Trzeci przycisk", IDC_PRZYC3, 7, 55, 84, 14
  16. }
  17.  
  18. ///////source.cpp/////////
  19.  
  20. #include <Windows.h>
  21. #include "stdio.h"
  22. #include "resource.h"
  23.  
  24. TCHAR ClassName[] = TEXT("Nazwa Klasy");
  25. HINSTANCE *hInst;
  26. MSG Komunikat;
  27. HWND okno;
  28.  
  29. BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
  30.  
  31. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  32.  
  33. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  34. {
  35.     hInst = &hInstance;
  36.  
  37.     WNDCLASSEX window;
  38.     window.cbClsExtra = NULL;
  39.     window.cbSize = sizeof(WNDCLASSEX);
  40.     window.cbWndExtra = NULL;
  41.     window.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  42.     window.hCursor = LoadCursor(*hInst, IDC_ARROW);
  43.     window.hIcon = LoadIcon(*hInst, IDI_APPLICATION);
  44.     window.hIconSm = NULL;
  45.     window.hInstance = *hInst;
  46.     window.lpfnWndProc = WndProc;
  47.     window.lpszClassName = ClassName;
  48.     window.lpszMenuName = 0;
  49.     window.style = NULL;
  50.  
  51.     if (!RegisterClassEx(&window)) {
  52.         MessageBox(NULL, TEXT("Zarejestrowanie klasy nieudane! =("), TEXT("WARNING"), MB_OK | MB_ICONWARNING);
  53.         return 1;
  54.     }
  55.  
  56.     HWND okno1;
  57.     okno1 = CreateWindowEx(WS_EX_WINDOWEDGE, ClassName, TEXT("Okno 1"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, *hInst, NULL);
  58.  
  59.     if (okno1 == NULL) {
  60.         MessageBox(NULL, TEXT("Stworzenie okna nieudane! =("), TEXT("WARNING"), MB_OK | MB_ICONWARNING);
  61.         return 2;
  62.     }
  63.  
  64.     HWND hPrzyc = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Dialog"), WS_CHILD | WS_VISIBLE,
  65.         5, 5, 50, 25, okno1, NULL, hInstance, NULL);
  66.  
  67.     ShowWindow(okno1, nCmdShow);
  68.     UpdateWindow(okno1);
  69.  
  70.     while (GetMessage(&Komunikat, NULL, 0, 0)) {
  71.         if (!IsDialogMessage(hPrzyc, &Komunikat))
  72.         {
  73.         TranslateMessage(&Komunikat);
  74.         DispatchMessage(&Komunikat);
  75.         }
  76.     }
  77.  
  78.     UnregisterClass(ClassName, *hInst);
  79.     return Komunikat.wParam;
  80. }
  81.  
  82. BOOL CALLBACK DlgProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
  83. {
  84.     switch (Msg)
  85.     {
  86.     case WM_COMMAND:
  87.     {
  88.         // reakcja na przyciski
  89.         switch (LOWORD(wParam))
  90.         {
  91.         case IDC_PRZYC1: EndDialog(hwnd, IDC_PRZYC1); break;
  92.         case IDC_PRZYC2: EndDialog(hwnd, IDC_PRZYC2); break;
  93.         case IDC_PRZYC3: EndDialog(hwnd, IDC_PRZYC3); break;
  94.         }
  95.     }
  96.     break;
  97.  
  98.     default: return FALSE;
  99.     }
  100.     return true;
  101. }
  102.  
  103. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  104. {
  105.     switch (msg)
  106.     {
  107.  
  108.     case WM_COMMAND:
  109.     {
  110.         int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_PASEK), hwnd, DlgProc);
  111.         if (ret == IDC_PRZYC1) {
  112.             MessageBox(hwnd, TEXT("Wybrałeś \"Przycisk 1\" w oknie dialogowym!"), TEXT("Test"), MB_ICONINFORMATION);
  113.             //DestroyWindow(hwnd);
  114.         }
  115.         else if (ret == IDC_PRZYC2) {
  116.             MessageBox(hwnd, TEXT("Wybrałeś \"Przycisk 2\" w oknie dialogowym!"), TEXT("Test"), MB_ICONINFORMATION);
  117.         }
  118.         else if (ret == IDC_PRZYC3) {
  119.             MessageBox(hwnd, TEXT("Wybrałeś \"Przycisk 3\" w oknie dialogowym!"), TEXT("Test"), MB_ICONINFORMATION);
  120.         }
  121.  
  122.     } break;
  123.  
  124.     case WM_CLOSE:
  125.     {
  126.  
  127.         if ((MessageBox(hwnd, TEXT("Czy chcesz wyłączyć okno ?"), TEXT("Pytanie"), MB_OKCANCEL)) == IDOK)
  128.             DestroyWindow(hwnd);
  129.     } break;
  130.  
  131.     case WM_DESTROY:
  132.     {
  133.         PostQuitMessage(0);
  134.     } break;
  135.  
  136.     default:
  137.         return DefWindowProcW(hwnd, msg, wParam, lParam);
  138.     }
  139.     return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement