Mazzir Temat założony przez niniejszego użytkownika |
Zapis do pliku przyciskiem WinAPI » 2010-12-05 20:28:17 Jak zrobić żeby po kliknięciu przycisku g_hPrzycisk tekst z pola hText zapisał się do pliku tekst.txt ? |
|
dmx81 |
» 2010-12-05 20:41:12 po pierwsze musisz wiedziec, jak w ogole zapisuje sie do pliku po drugie - pole w ktory wpisujesz, ma na pewno cos jak getText() czy cos takiego (nie siedze w winapi), wiec wystarczy opisac tylko zdarzenie nacisniecia przycisku - ze ma sie wykonac funkcja mniej wiecej tak: if( button->clicked() ) { string s = pole->getText(); zapis( s ); }
gdzie zapis() to funkcja otwierajaca plik i zapisujaca do niego podany argument - to tak mniej wiecej ps. oczywiscie funkcje zapis musisz napisac sam - chyba wiesz jak sie pisze funkcje i wykorzystuje przekazywane argumenty? no i do tego doczytac kurs o obsludze pliku i sprawa zalatwiona :) ps2. zerknij tez w kurs winampi jak dokladnie pobiera sie tekst z pola tekstowego |
|
Mazzir Temat założony przez niniejszego użytkownika |
» 2010-12-05 20:46:08 Wiem jak się pobiera, wiem jak się zapisuje, ale nie wiem tylko jak "zlecić" przyciskowi jakieś zadanie - jaka to funkcja ? |
|
malan |
» 2010-12-05 21:05:45 Żadna funkcja ;p. Sam musisz to sobie oprogramować, w procedurze okna (WndProc). |
|
Mazzir Temat założony przez niniejszego użytkownika |
» 2010-12-05 21:40:28 Dobra już wiem WM_COMMAND to było ;p A teraz mam problem bo mi tego tekstu nie zapisuje :D Kod programu: http://wklej.org/id/432392/ |
|
malan |
» 2010-12-05 21:49:04 Użyj iostream lub cstdio :). |
|
Mazzir Temat założony przez niniejszego użytkownika |
» 2010-12-05 21:55:16 No pomóż ja się lepiej na gotowym kodzie uczę szukając po necie co te literki złączone w słowa robią :D |
|
wojos |
» 2010-12-05 22:57:58 Ten kod, który tam masz nie zadziała na 100% :D Tworzysz plik jeszcze zanim program tak na prawdę ruszy (przed pętlą komunikatów i do tego go zamykasz, a potem próbujesz pisać w niczym (bo plik już zamknąłeś). Najlepiej napisz sobie funkcję zapisującą pliki: #include <string.h>
bool SaveFile( const char * Address, const char * Text ) { DWORD dwSize, dwSaved; HANDLE hPlik; hPlik = CreateFile( Address, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL ); if( hPlik == INVALID_HANDLE_VALUE ) return( false ); dwSize = strlen( Text ); if( dwSize == 0 ) { CloseHandle( hPlik ); return( false ); } if( !WriteFile( hPlik, Text, dwSize, & dwSaved, NULL ) ) { CloseHandle( hPlik ); return( false ); } CloseHandle( hPlik ); return( true ); }
A potem w obsłudze komunikatów: LRESULT CALLBACK WindowProcedure( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_DESTROY: PostQuitMessage( 0 ); break; case WM_COMMAND: if( g_hPrzycisk ==( HWND ) lParam ) { int Length = GetWindowTextLength( g_hText ); char * Buffer =( char * ) GlobalAlloc( GPTR, Length + 1 ); GetWindowText( g_hText, Buffer, Length + 1 ); if( !SaveFile( "Plik.txt", Buffer ) ) MessageBox( hwnd, "Nie udalo sie zapisac!", "Blad!", MB_ICONERROR ); GlobalFree( Buffer ); } break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
EDIT: Sorry, że te komentarze się trochę rozjechały ale pisałem to w przeglądarce i uwierzyć mi musisz, że w trybie edycji wyglądało to inaczej :D |
|
« 1 » 2 |