Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zapis do pliku przyciskiem WinAPI

Ostatnio zmodyfikowano 2010-12-06 22:59
Autor Wiadomość
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 ?
P-24852
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:
C/C++
if( button->clicked() )
{
    string s = pole->getText(); //lub s=pole->Text() - nie wiem jak to jest w winapi
    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
P-24855
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 ?
P-24856
malan
» 2010-12-05 21:05:45
Żadna funkcja ;p. Sam musisz to sobie oprogramować, w procedurze okna (WndProc).
P-24857
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/
P-24859
malan
» 2010-12-05 21:49:04
Użyj iostream lub cstdio :).
P-24860
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
P-24862
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:

C/C++
#include <string.h>

bool SaveFile( const char * Address, const char * Text ) //Address to pelna sciezka lub tylko nazwa
{
    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:

C/C++
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 ) /*Tak w ogole to lepiej zebys nauczyl sie dawac kontrolkom
                                                             identyfikatory i nimi rozpoznawac a nie uchwytem*/
        {
            int Length = GetWindowTextLength( g_hText ); /*Jesli nie masz identyfikatora kontrolki to
                                                                               musisz pole tekstowe zadeklarowac jako
                                                                               globalna zmienna*/
            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
P-24866
« 1 » 2
  Strona 1 z 2 Następna strona