#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

char tablica[10][5][20] = { {"Glupi ","pies ","zjadl ","ladny ","obraz."},
						  {"Zielony ","smok ","lize ","czerwony ","robak."},
						  {"Krzywy ","Osama ","skacze po","gruby ","nauczyciel."},
						  {"Smierdzacy ","dziweczyna ","zabil","chudy ","uczen."},
						  {"Brudny ","chlopak ","rozsadzil ","trujacy ","grzyb."},
						  {"Gorzki ","dinozaur ","bije ","zimny ","kluska."},
						  {" ","","","",""},
						  {"","","","",""},
						  {"","","","",""},
						  {"","","","",""} };
int il=6;
LPSTR NazwaKlasy = "KlasaOkna";
HWND hTextA, hTextB;

// obs-uga zdarze1, wywo-ana przes patla komunikat!w
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
	case WM_COMMAND:  //obs-uga przycisku
		DWORD dlug; 
     	LPSTR Bufor;
		switch( wParam )
		{
		case 101:  //symboliczny numer/identyfikator przycisku
			int tab[5];
			dlug=0;
			for(int i=0;i<5;i++) {
				tab[i]=rand()%il;
				dlug+=tab[i];
			}
			Bufor =( LPSTR ) GlobalAlloc( GPTR, dlug);
            strcpy(Bufor,tablica[tab[0]][0]); 
			for(int i=1;i<5;i++) {
				strcat(Bufor,tablica[tab[i]][i]); 
			}
			SetWindowText( hTextA, Bufor );
			GlobalFree( Bufor );
			break;
		}
		break;
    case WM_CLOSE:  
        DestroyWindow( hwnd );
        break;
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
    default:   
        return DefWindowProc( hwnd, msg, wParam, lParam );
    }
    
    return 0;
}


// g-!wna funkcja programu
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    WNDCLASSEX wc;	
    HWND hwnd;
	MSG Komunikat;

   // wype-nienie struktury okna
    wc.cbSize = sizeof( WNDCLASSEX );
    wc.style = 0;
    wc.lpfnWndProc = WndProc;
    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 );
    
    //rejestracja klasy okna
    if( !RegisterClassEx( & wc ) )
    {
        MessageBox( NULL, "Odmawia rejestracji okna!", "Problem...",
        MB_ICONEXCLAMATION | MB_OK );
        return 1;
    }
    // utworzenie okna
    hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Generator zdañ.", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, hInstance, NULL );
    if( hwnd == NULL )
    {
        MessageBox( NULL, "Odmowa utworzenia okna!", "B-Üd...", MB_ICONEXCLAMATION );
        return 1;
    }
    ShowWindow( hwnd, nCmdShow );
    UpdateWindow( hwnd );
    

	//	Tutaj znajduje sia g-!wna cza?Š programu,
	//	gdzie znajdujÜ sia wszystkie funkcje wej?cia i przesy-ane sÜ do WinProc.
		

	hTextA = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 
		40, 200, 300, 30, hwnd, NULL, hInstance, NULL );
	HWND hPrzyciskKopiuj = CreateWindowEx( WS_EX_CLIENTEDGE, "BUTTON", " Generuj g³upie zdania", WS_CHILD | WS_VISIBLE, 
		40, 100, 300, 30, hwnd, (HMENU)101, hInstance, NULL );
		
    //patla komunikat!w
    while( GetMessage( &Komunikat, NULL, 0, 0 ) >0 )
    {
        TranslateMessage( &Komunikat ); 
        DispatchMessage( &Komunikat );   //przes-anie komunikat!w do WinProc
    }
    return Komunikat.wParam;
}

