Hyluss icon

1 laborki Tworzenie kilku okien

Hyluss | PRO | 10/18/16 03:13:24 PM UTC | 0 ⭐ | 10400 👁️ | Never ⏰ | []
C++ (WinAPI) |

0 B

|

None

|

0 👍

/

0 👎

#include <windows.h>
#include "stdafx.h"
 
TCHAR NazwaAplikacji[] = TEXT("Aplikacja studencka");
TCHAR NazwaKlasy[] = TEXT("Klasa Okienka");
MSG Komunikat;
 
int okna = 3;
 
static LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    TCHAR Buff[64];
    HWND nowe_okno;
        switch(msg)
    {   
    //  case WM_CREATE:
    //      okna++;
    //      break;
        case WM_CLOSE:
            if(MessageBox(0, TEXT("Czy na pewno chcesz zamknac okno?"), TEXT("Uwaga"), MB_YESNO | MB_ICONQUESTION) == IDYES) 
            {
                okna--;
                DestroyWindow(hwnd);
            }
            break;
        case WM_DESTROY:
            if(!okna)
            {
                MessageBox(0, TEXT("01001 01111 10 00110 01100 00011"), TEXT("10101 100101"), MB_OK);
                PostQuitMessage(0);
            }
            break;
        case WM_SIZE:
            swprintf( Buff, TEXT("Rozmiar okna %d x %d"), LOWORD(lParam), HIWORD(lParam) );
            SetWindowText( hwnd, Buff );
            break;
 
        case WM_LBUTTONDOWN:
            nowe_okno = CreateWindowEx( WS_EX_APPWINDOW | WS_EX_CLIENTEDGE,
            NazwaKlasy, TEXT("Okno"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 240,
            0, 0, GetModuleHandle(0), 0 );
            if (!nowe_okno)
            {
                MessageBox( 0, TEXT("Nie udało się stworzyć nowego okna!"), NazwaKlasy, MB_ICONSTOP );
            }
            else 
            {
                okna++;
            }
            ShowWindow( nowe_okno, SW_SHOW );
            UpdateWindow( nowe_okno );
            break;
        default:
            return DefWindowProc(hwnd, msg, wParam, lParam);
        break;
    }
    return 0;
}
 
 
 
   // Rejestracja klasy
int RejestracjaKlasy (WNDCLASSEX &wc, HINSTANCE &hInstance)
{
    wc.cbSize = sizeof( WNDCLASSEX );
    wc.style = 0;
    wc.lpfnWndProc = WndProc; //funkcja
    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 );
    if( !RegisterClassEx( &wc ) )
    {
        MessageBox ( NULL, TEXT("Odmowa rejestracji okna!"), TEXT("Lipton"),
        MB_ICONEXCLAMATION | MB_OK );
        return 1;
    }
}
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    // TWORZENIE OKNA
    HWND okno1;
    HWND okno2;
    HWND okno3;
    // REJESTRACJA OKNA
    WNDCLASSEX wc;
 
    //REJESTRACJA KLASY OKNA
    RejestracjaKlasy (wc, hInstance);
   
    // BUDOWA OKNA
    okno1 = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, TEXT("Okno1"), WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL );
    if( okno1 == NULL )
    {
        MessageBox( NULL, TEXT("Okno1 odmówiło przyjścia na świat!"), TEXT("Ale kicha..."), MB_ICONEXCLAMATION );
        return 1;
    }
    ShowWindow (okno1, nCmdShow);
    UpdateWindow (okno1);
 
    okno2 = CreateWindowEx (NULL, NazwaKlasy, TEXT("Okno2"), WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL );
    if( okno2 == NULL )
    {
        MessageBox( NULL, TEXT("Okno2 odmówiło przyjścia na świat!"), TEXT("Ale kicha..."), MB_ICONEXCLAMATION );
        return 1;
    }
    ShowWindow (okno2, nCmdShow);
    UpdateWindow (okno2);
 
    okno3 = CreateWindowEx (NULL, NazwaKlasy, TEXT("Okno3"), WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL );
    if( okno3 == NULL )
    {
        MessageBox( NULL, TEXT("Okno3 odmówiło przyjścia na świat!"), TEXT("Ale kicha..."), MB_ICONEXCLAMATION );
        return 1;
    }
    ShowWindow (okno3, nCmdShow);
    UpdateWindow (okno3);
 
    // Pętla komunikatów
    while( GetMessage( & Komunikat, NULL, 0, 0 ) )
    {
        TranslateMessage( & Komunikat );
        DispatchMessage( & Komunikat );
    }
    return Komunikat.wParam;
 
    UnregisterClass(NazwaKlasy, hInstance);
 
    return 0;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎