Hyluss

1 laborki Tworzenie kilku okien

Oct 18th, 2016
848
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <windows.h>
  2. #include "stdafx.h"
  3.  
  4. TCHAR NazwaAplikacji[] = TEXT("Aplikacja studencka");
  5. TCHAR NazwaKlasy[] = TEXT("Klasa Okienka");
  6. MSG Komunikat;
  7.  
  8. int okna = 3;
  9.  
  10. static LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
  11. {
  12.     TCHAR Buff[64];
  13.     HWND nowe_okno;
  14.         switch(msg)
  15.     {  
  16.     //  case WM_CREATE:
  17.     //      okna++;
  18.     //      break;
  19.         case WM_CLOSE:
  20.             if(MessageBox(0, TEXT("Czy na pewno chcesz zamknac okno?"), TEXT("Uwaga"), MB_YESNO | MB_ICONQUESTION) == IDYES)
  21.             {
  22.                 okna--;
  23.                 DestroyWindow(hwnd);
  24.             }
  25.             break;
  26.         case WM_DESTROY:
  27.             if(!okna)
  28.             {
  29.                 MessageBox(0, TEXT("01001 01111 10 00110 01100 00011"), TEXT("10101 100101"), MB_OK);
  30.                 PostQuitMessage(0);
  31.             }
  32.             break;
  33.         case WM_SIZE:
  34.             swprintf( Buff, TEXT("Rozmiar okna %d x %d"), LOWORD(lParam), HIWORD(lParam) );
  35.             SetWindowText( hwnd, Buff );
  36.             break;
  37.  
  38.         case WM_LBUTTONDOWN:
  39.             nowe_okno = CreateWindowEx( WS_EX_APPWINDOW | WS_EX_CLIENTEDGE,
  40.             NazwaKlasy, TEXT("Okno"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 240,
  41.             0, 0, GetModuleHandle(0), 0 );
  42.             if (!nowe_okno)
  43.             {
  44.                 MessageBox( 0, TEXT("Nie udało się stworzyć nowego okna!"), NazwaKlasy, MB_ICONSTOP );
  45.             }
  46.             else
  47.             {
  48.                 okna++;
  49.             }
  50.             ShowWindow( nowe_okno, SW_SHOW );
  51.             UpdateWindow( nowe_okno );
  52.             break;
  53.         default:
  54.             return DefWindowProc(hwnd, msg, wParam, lParam);
  55.         break;
  56.     }
  57.     return 0;
  58. }
  59.  
  60.  
  61.  
  62.    // Rejestracja klasy
  63. int RejestracjaKlasy (WNDCLASSEX &wc, HINSTANCE &hInstance)
  64. {
  65.     wc.cbSize = sizeof( WNDCLASSEX );
  66.     wc.style = 0;
  67.     wc.lpfnWndProc = WndProc; //funkcja
  68.     wc.cbClsExtra = 0;
  69.     wc.cbWndExtra = 0;
  70.     wc.hInstance = hInstance;
  71.     wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
  72.     wc.hCursor = LoadCursor( NULL, IDC_ARROW );
  73.     wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
  74.     wc.lpszMenuName = NULL;
  75.     wc.lpszClassName = NazwaKlasy;
  76.     wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
  77.     if( !RegisterClassEx( &wc ) )
  78.     {
  79.         MessageBox ( NULL, TEXT("Odmowa rejestracji okna!"), TEXT("Lipton"),
  80.         MB_ICONEXCLAMATION | MB_OK );
  81.         return 1;
  82.     }
  83. }
  84.  
  85.  
  86. int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
  87. {
  88.     // TWORZENIE OKNA
  89.     HWND okno1;
  90.     HWND okno2;
  91.     HWND okno3;
  92.     // REJESTRACJA OKNA
  93.     WNDCLASSEX wc;
  94.  
  95.     //REJESTRACJA KLASY OKNA
  96.     RejestracjaKlasy (wc, hInstance);
  97.    
  98.     // BUDOWA OKNA
  99.     okno1 = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, TEXT("Okno1"), WS_OVERLAPPEDWINDOW,
  100.     CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL );
  101.     if( okno1 == NULL )
  102.     {
  103.         MessageBox( NULL, TEXT("Okno1 odmówiło przyjścia na świat!"), TEXT("Ale kicha..."), MB_ICONEXCLAMATION );
  104.         return 1;
  105.     }
  106.     ShowWindow (okno1, nCmdShow);
  107.     UpdateWindow (okno1);
  108.  
  109.     okno2 = CreateWindowEx (NULL, NazwaKlasy, TEXT("Okno2"), WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME,
  110.     CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL );
  111.     if( okno2 == NULL )
  112.     {
  113.         MessageBox( NULL, TEXT("Okno2 odmówiło przyjścia na świat!"), TEXT("Ale kicha..."), MB_ICONEXCLAMATION );
  114.         return 1;
  115.     }
  116.     ShowWindow (okno2, nCmdShow);
  117.     UpdateWindow (okno2);
  118.  
  119.     okno3 = CreateWindowEx (NULL, NazwaKlasy, TEXT("Okno3"), WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME,
  120.     CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL );
  121.     if( okno3 == NULL )
  122.     {
  123.         MessageBox( NULL, TEXT("Okno3 odmówiło przyjścia na świat!"), TEXT("Ale kicha..."), MB_ICONEXCLAMATION );
  124.         return 1;
  125.     }
  126.     ShowWindow (okno3, nCmdShow);
  127.     UpdateWindow (okno3);
  128.  
  129.     // Pętla komunikatów
  130.     while( GetMessage( & Komunikat, NULL, 0, 0 ) )
  131.     {
  132.         TranslateMessage( & Komunikat );
  133.         DispatchMessage( & Komunikat );
  134.     }
  135.     return Komunikat.wParam;
  136.  
  137.     UnregisterClass(NazwaKlasy, hInstance);
  138.  
  139.     return 0;
  140. }
Advertisement