Dobra dzięki bardzo poradziłem już sobie. Problem tkwił tylko z pobieraniem danych z EDIT'a poszukałem jeszcze trochę w necie i znalazłem bardzo fajną funkcję pobierającą int'a z EDIT'a. Dodałem jeszcze setfocusa i wszystko śmiga :)
#include <windows.h>
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<sstream>
#include<string>
using namespace std;
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;
HWND Przycisk, Przycisk_zamknij, hText[ 6 ], Wyniki;
int los[ 6 ];
string ile_traf, czybyla_str;
int GetIntFromEdit( HWND hEdit )
{
int textLength = GetWindowTextLength( hEdit ) + 1;
char * textBuffer = new char[ textLength ];
GetWindowText( hEdit, textBuffer, textLength );
return atoi( textBuffer );
}
bool CzyBylaLosowana( int Liczba, int tab[], int ile )
{
if( ile <= 0 ) { return false; }
int i = 0;
do
{
if( Liczba == tab[ i ] ) { return true; }
i++;
} while( i < ile );
return false;
}
INT WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
srand( time( 0 ) );
int liczba;
int ile = 0;
do
{
liczba =( rand() % 42 ) + 1;
if( CzyBylaLosowana( liczba, los, ile ) == false )
{
los[ ile ] = liczba;
ile++;
}
} while( ile < 6 );
ile = 0;
stringstream przel[ 6 ];
string chwila[ 6 ];
ile_traf = "Moje liczby to: ";
do
{
przel[ ile ] << los[ ile ];
przel[ ile ] >> chwila[ ile ];
ile_traf = ile_traf + chwila[ ile ] + ", ";
ile++;
} while( ile < 6 );
MessageBox( 0,
"Witaj w lotto! \nZeby wygrac trzeba grac!",
"Zagraj w lotto.",
MB_OK | MB_ICONINFORMATION );
WNDCLASSEX wc;
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 );
wc.lpszMenuName = NULL;
wc.lpszClassName = NazwaKlasy;
wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
if( !RegisterClassEx( & wc ) )
{
MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
MB_ICONEXCLAMATION | MB_OK );
return 1;
}
HWND hwnd;
hwnd = CreateWindowEx( WS_EX_CLIENTEDGE,
NazwaKlasy,
"Zagraj w lotto",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
200,
0,
0,
hInstance,
0 );
HWND hStatic = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
SS_LEFT, 50, 20, 350, 50, hwnd, NULL, hInstance, NULL );
Wyniki = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
SS_LEFT, 50, 110, 350, 50, hwnd, NULL, hInstance, NULL );
SetWindowText( hStatic, "Program wylosowal 6 liczb z 42. Sprobuj trafic w te liczby :)" );
if( hwnd == NULL )
{
MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION );
return 1;
}
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
int gdzie = 50;
Przycisk = CreateWindowEx( 0, "BUTTON", "Porownaj", WS_CHILD | WS_VISIBLE,
450, 10, 150, 30, hwnd, NULL, hInstance, NULL );
Przycisk_zamknij = CreateWindowEx( 0, "BUTTON", "Zamknij", WS_CHILD | WS_VISIBLE,
450, 120, 150, 30, hwnd, NULL, hInstance, NULL );
int ile_okien = 0;
do
{
hText[ ile_okien ] = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,
gdzie += 30, 80, 25, 25, hwnd, NULL, hInstance, NULL );
SendMessage( hText[ ile_okien ], EM_SETLIMITTEXT, 2, 0 );
ile_okien++;
} while( ile_okien < 6 );
SetFocus( hText[ 0 ] );
while( GetMessage( & Komunikat, NULL, 0, 0 ) )
{
TranslateMessage( & Komunikat );
DispatchMessage( & Komunikat );
}
return Komunikat.wParam;
return 0;
}
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_CLOSE:
DestroyWindow( hwnd );
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
case WM_COMMAND:
{
int ile_okien = 0;
if(( HWND ) lParam == Przycisk )
{
LPSTR Bufor, Wynik;
DWORD dlugosc;
int czybyla = 0;
stringstream strim;
int co;
do
{
co = GetIntFromEdit( hText[ ile_okien ] );
if( CzyBylaLosowana( co, los, 6 ) ) { czybyla++; }
ile_okien++;
GlobalFree( Bufor );
} while( ile_okien < 6 );
if( czybyla_str.empty() )
{
strim << czybyla;
strim >> czybyla_str;
ile_traf += "\nTrafiles " + czybyla_str + " razy.";
}
Wynik = const_cast < char *>( ile_traf.c_str() );
SetWindowText( Wyniki, Wynik );
}
ile_okien = 0;
do
{
if( HIWORD( wParam ) == EN_MAXTEXT &&( HWND ) lParam == hText[ ile_okien ] )
{
SetFocus( hText[ ile_okien + 1 ] );
}
ile_okien++;
} while( ile_okien < 6 );
if(( HWND ) lParam == Przycisk_zamknij )
DestroyWindow( hwnd );
break;
}
default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}
return 0;
}