Advertisement
Alan468

Untitled

Oct 18th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #include <Windows.h> // Podstawa do WinAPI
  2.  
  3. HWND hwnd, NewHwnd;
  4. WNDCLASSEX window; // Zmienna klasy
  5. MSG msg; // Zmienna wydarzenia
  6. TCHAR Class_Name[] = TEXT("OKNO_TEST"), Title[] = TEXT("Tytul"); // Tytuly TCHAR
  7. int NumberOfWindows = 0, PosuitionX = 0, PositionY = 0;
  8.  
  9. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {//Funkcja eventów
  10.     switch (msg) {
  11.     case WM_CREATE:
  12.         NumberOfWindows++;
  13.         UpdateWindow(hwnd);
  14.         break;
  15.     case WM_COMMAND:    break;// Eventy uzytkownika
  16.     case WM_CLOSE:// Event zamkniecia
  17.         if (MessageBox(0, TEXT("Zamknac to okno?"), TEXT("?"), MB_YESNO | MB_ICONQUESTION) == IDYES) {
  18.             NumberOfWindows--;
  19.             DestroyWindow(hwnd);
  20.         }
  21.         break;
  22.     case WM_DESTROY:// Event zamkniecia
  23.         if (NumberOfWindows == 0) {
  24.             MessageBox(0, TEXT("KONIEC!"), TEXT("KONIEC!"), MB_OK);
  25.             PostQuitMessage(0);
  26.         }
  27.         break;
  28.     case WM_LBUTTONDOWN:
  29.         NewHwnd = CreateWindowEx(0, Class_Name, TEXT("Nowe Okno"), WS_OVERLAPPEDWINDOW, 100, 100, 500, 300, 0, 0, GetModuleHandle(0), 0);
  30.         ShowWindow(NewHwnd, SW_SHOW);
  31.         UpdateWindow(NewHwnd);
  32.         break;
  33.     case WM_SIZE:
  34.  
  35.         break;
  36.     default:// Nieznany event
  37.         return DefWindowProc(hwnd, msg, wParam, lParam);
  38.     }
  39.     return 0;
  40. }
  41.  
  42. bool Register_Class(HINSTANCE &hInstance) {
  43.     window.cbClsExtra = NULL;// Wypelnianie klasy okna //
  44.     window.cbSize = sizeof(WNDCLASSEX);
  45.     window.cbWndExtra = NULL;
  46.     window.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  47.     window.hCursor = LoadCursor(NULL, IDC_ARROW);
  48.     window.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  49.     window.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  50.     window.hInstance = hInstance;
  51.     window.lpfnWndProc = WndProc;
  52.     window.lpszClassName = Class_Name;
  53.     window.lpszMenuName = 0;
  54.     window.style = CS_VREDRAW | CS_HREDRAW;
  55.     return RegisterClassEx(&window);
  56. }
  57.  
  58. void Unregister_Window(HINSTANCE &hInstance) {
  59.     if (!UnregisterClass(Class_Name, hInstance)) { // Niszczenie okna ....
  60.         MessageBox(NULL, TEXT("Błąd niszczenia okna"), TEXT("Błąd"), MB_ICONEXCLAMATION);
  61.     }
  62. }
  63.  
  64. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ilCmdLine, int nCmdShow) { // main
  65.     Register_Class(hInstance);
  66.  
  67.     if (!Register_Class) { // Rejestracja klasy okna .... jesli blad STOP
  68.         MessageBox(NULL, TEXT("Błąd rejestracji okna"), TEXT("Błąd"), MB_ICONEXCLAMATION);
  69.         return 0;
  70.     }
  71.  
  72.     hwnd = CreateWindowEx(WS_EX_WINDOWEDGE, Class_Name, Title, WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL); //Tworzenie okna
  73.  
  74.     if (hwnd == NULL) {//Sprawdzanie czy okno zostalo stworzeona
  75.         MessageBox(NULL, TEXT("Błąd tworzenia okna"), TEXT("Błąd"), MB_ICONEXCLAMATION);
  76.         return 0;
  77.     }
  78.  
  79.     ShowWindow(hwnd, nCmdShow); // Wyswietlenie okna
  80.     UpdateWindow(hwnd); // Aktualizacja okna
  81.  
  82.     while (GetMessage(&msg, NULL, 0, 0)) { // Petla eventow
  83.         TranslateMessage(&msg); // tlumacznie eventu
  84.         DispatchMessage(&msg); // Wykonywanie eventu
  85.     }
  86.  
  87.  
  88.     Unregister_Window(hInstance);
  89.  
  90.     return msg.wParam;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement