xxxmgdxxx Temat założony przez niniejszego użytkownika |
[C++, WinAPI] Edytowanie tekstu oraz weryfikacja z użyciem funkcji MessageBox » 2012-12-10 16:57:28 Witam mam wykonać okno aplikacji zawierające
1. Tekst tytułowy na środku obszaru roboczego pod paskiem tytułu 2. pole tekstowe z etykietą 3. przycisk ekranowy
Procedura okna powinna obsługiwać następujące zdarzenia:
1. czytać tekst wprowadzony w polu tekstowym 2. po naciśnięciu przycisku wyświetlić MessageBox zawierający wpisany w polu tekstowym ciąg znaków naciśnięcie OK powinno zamknąć aplikację 3. jeżeli nic nie zostało wpisane wyświetlić MessageBox z z odpowiednim komunikatem naciśnięcie OK powinno spowodować powrót do edycji tekstu 4. Wymuszenie zamknięcia okna powinno wyświetlić MessageBox z komunikatem: "Musisz wpisać coś" i spowodować powrót do edycji tekstu.
Jednak miałam dopiero jedne zajęcia z programowania obiektowego i wg nie wiem o co chodzi. Mam nadzieje że ktoś pomoże mi napisać ten program. |
|
kubawal |
» 2012-12-10 17:07:20 programowania obiektowego |
WinAPI jest tak (beznadziejnie) napisane, że aplikacje z jego użyciem rzadko kiedy pisze się z użyciem klas. Nie musisz znać programowania obiektowego, żeby napisać jakąkolwiek aplikację z użyciem WinAPI |
|
xxxmgdxxx Temat założony przez niniejszego użytkownika |
» 2012-12-10 17:17:24 może ja wyślę to co pisaliśmy za zajęciach... #include <windows.h>
LRESULT CALLBACK ProceduraOkna( HWND, UINT, WPARAM, LPARAM ); char szNazwaKlasy[] = "Okno aplikacji";
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow ) { HWND hwnd; MSG komunikat; WNDCLASSEX okno; okno.cbSize = sizeof( WNDCLASSEX ); okno.hInstance = hInstance; okno.lpszClassName = szNazwaKlasy; okno.lpfnWndProc = ProceduraOkna; okno.style = 0; okno.hIcon = LoadIcon( NULL, IDI_APPLICATION ); okno.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); okno.hCursor = LoadCursor( NULL, IDC_HAND ); okno.lpszMenuName = NULL; okno.cbClsExtra = 0; okno.cbWndExtra = 0; okno.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); RegisterClassEx( & okno ); hwnd = CreateWindowEx( 0, szNazwaKlasy, "Pierwsze okno", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hInstance, NULL ); ShowWindow( hwnd, nCmdShow ); while( GetMessage( & komunikat, NULL, 0, 0 ) ) { TranslateMessage( & komunikat ); DispatchMessage( & komunikat ); } return 0; } LRESULT CALLBACK ProceduraOkna( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_PAINT: { PAINTSTRUCT psPaint; HDC hdc = BeginPaint( hwnd, & psPaint ); char Obiekt_napis[ 20 ] = "Hello, World"; int dlugosc_tekstu = sizeof( Obiekt_napis ); TextOut( hdc, 10, 10, Obiekt_napis, dlugosc_tekstu ); EndPaint( hwnd, & psPaint ); break; } case WM_CLOSE : if(( MessageBox( hwnd, "Czy na pewno zamknac okno?", "Uwaga!", MB_OKCANCEL ) == IDOK ) ) { DestroyWindow( hwnd ); } break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; } I właściwie nie wiem o co chodzi. |
|
CodeMeister |
» 2012-12-10 17:52:18 Usuń to :) okienko wyswietl funkcja CreateWindowEx a nie jakąś paint :P
Zerknij w kurs na tym portalu. Z nim zrobisz bez problemu ;)
//EDIT:
Usun tylko procedure malowania okienka. inicjalizacje i rejestrowanie klasy zostaw w świętym spokoju. |
|
kubawal |
» 2012-12-10 18:26:42 Przecież dobrze robi! Okno tworzy funkcją CreateWindowEx(), a gdy procedura okna odbiera komunikat WM_PAINT, to znaczy, że powinniśmy odmalować to, co sobie narysowaliśmy w naszym obszarze roboczym. |
|
kubawal |
» 2012-12-10 18:29:38 I właściwie nie wiem o co chodzi. |
Weź się dobrze poucz, a nie idź ze wszystkim od razu na forum. Poza tym, nazwa tematu jest zła. |
|
« 1 » |