Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*************************************************************/
- /* Programowanie Interfejsu Użytkownika - Dawid Tomczyk */
- /*************************************************************/
- #include <Windows.h>
- TCHAR nazwa[] = TEXT ("Cwiczenie przed laborkami 2");
- TCHAR buff[128];
- HWND okno[10];
- HINSTANCE hInstance_global;
- short int x = 0, y = 0, sizex = 0, sizey = 0, szerokosc = 0, width = 0, height = 0, startPos = 0, wysokosc = 0, startPosH = 0;
- static int hwnd_count, i;
- LRESULT CALLBACK Procedura ( HWND aplikacja, UINT wiadomosc, WPARAM wParam, LPARAM lParam )
- {
- switch( wiadomosc )
- {
- case WM_CREATE:
- {
- ++hwnd_count;
- break;
- }
- case WM_LBUTTONDOWN:
- {
- if( hwnd_count < 10 )
- {
- okno[++i] = CreateWindowEx (0, nazwa, TEXT("Okno Pochodne"), WS_OVERLAPPEDWINDOW, 50, 50, 500, 500, 0, 0, hInstance_global, 0);
- ShowWindow( okno[i], SW_SHOW );
- UpdateWindow( okno[i] );
- }
- else
- {
- MessageBox( HWND_DESKTOP, TEXT( "Nie można dodać kolejnego okna, wyczerpałeś swój limit!" ), TEXT("ERROR!"), MB_OK | MB_ICONERROR );
- }
- break;
- }
- case WM_RBUTTONDOWN:
- {
- width = GetSystemMetrics( SM_CXFULLSCREEN );
- height = GetSystemMetrics( SM_CYFULLSCREEN );
- szerokosc = width / hwnd_count;
- wysokosc = height / hwnd_count;
- if( GetKeyState( VK_SHIFT ) < 0 )
- {
- for( size_t i = 0; i < hwnd_count; ++i )
- {
- MoveWindow( okno[i], startPos , 0, szerokosc, height+24, true );
- startPos += szerokosc;
- }
- }
- else
- {
- for( size_t i = 0; i < hwnd_count; ++i )
- {
- MoveWindow( okno[i], 0 , startPosH, width, wysokosc, true );
- startPosH += wysokosc;
- }
- }
- break;
- }
- case WM_SIZE:
- {
- sizex = LOWORD( lParam );
- sizey = HIWORD( lParam );
- break;
- }
- case WM_MOVE:
- {
- x = LOWORD( lParam );
- y = HIWORD( lParam );
- break;
- }
- case WM_DESTROY:
- {
- PostQuitMessage( 0 );
- return 0;
- }
- default:
- return DefWindowProc( aplikacja, wiadomosc, wParam, lParam );
- }
- wsprintf( buff, L"Pozycja okna: x = %d, y = %d || Rozmiar okna sizex = %d, sizey = %d", x, y, sizex, sizey );
- SetWindowText( aplikacja, buff );
- return 0;
- }
- static bool RejestrujKlase ( WNDCLASSEX& wndclass )
- {
- wndclass.cbClsExtra = 0;
- wndclass.cbSize = sizeof (WNDCLASSEX);
- wndclass.cbWndExtra = 0;
- wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
- wndclass.hCursor = 0;
- wndclass.hIcon = 0;
- wndclass.hIconSm = 0;
- wndclass.hInstance = hInstance_global;
- wndclass.lpfnWndProc = Procedura;
- wndclass.lpszClassName = nazwa;
- wndclass.lpszMenuName = 0;
- wndclass.style = 0;
- if (!RegisterClassEx(&wndclass))
- {
- MessageBox(NULL, TEXT("Nie udało się zarejestrować klasy okna!"), nazwa, MB_ICONSTOP | MB_OK);
- return 0;
- }
- }
- static void WyrejestrujKlase()
- {
- UnregisterClass ( nazwa, GetModuleHandle(NULL) );
- }
- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )
- {
- hInstance_global = hInstance;
- WNDCLASSEX wndclass;
- RejestrujKlase(wndclass);
- okno[0] = CreateWindowEx (0, nazwa, TEXT("Okno Główne"), WS_OVERLAPPEDWINDOW, 50, 50, 500, 500, 0, 0, hInstance, 0);
- if (okno[0] == NULL)
- {
- MessageBox(NULL, TEXT("Wystąpił błąd podczas tworzenia okna!"), TEXT("BŁĄD!"), MB_ICONSTOP | MB_OK);
- return 0;
- }
- ShowWindow (okno[0], SW_SHOW);
- UpdateWindow (okno[0]);
- MSG wiadomosc;
- while( GetMessage( &wiadomosc, NULL, 0, 0 ) )
- {
- TranslateMessage( &wiadomosc );
- DispatchMessage( &wiadomosc );
- }
- WyrejestrujKlase();
- return wiadomosc.wParam;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement