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

[C++] WinApi - Obsługa plików (Problem)

Ostatnio zmodyfikowano 2012-08-09 20:06
Autor Wiadomość
krystian11102
Temat założony przez niniejszego użytkownika
[C++] WinApi - Obsługa plików (Problem)
» 2012-08-09 19:31:59
Witam, wziałem się za WinApi .. Tyle że doszedłem do plików ii.. Oto błąd przy kompulacji :

-------------- Build: Release in WinApek ---------------

Compiling: main1.cpp
C:\WinApek\main1.cpp:9:20: warning: deprecated conversion from string constant to 'LPSTR {aka char*}' [-Wwrite-strings]
C:\WinApek\main1.cpp: In function 'void zapis()':
C:\WinApek\main1.cpp:125:34: error: 'hwnd' was not declared in this scope
Process terminated with status 1 (0 minutes, 6 seconds)
1 errors, 1 warnings
--------------------------------------------------------

Chcę zrobić Okno w nim Pole Edit po kliknięciu przycisku tekst w polu ma się zapisać do pliku...
Oto Kod:

--------------------------------------------------------


#include <windows.h>
#include <stdio.h>
#include "keys.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
 #include <conio.h>
using namespace std;
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;
void zapis();
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
HWND Przycisk1;
HWND Przycisk2;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{

    // WYPE£NIANIE STRUKTURY
    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 + 1 );
    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, "Oto okienko", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 400, NULL, NULL, hInstance, NULL );

HWND Pole=CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 10,10,150,50, hwnd, NULL, hInstance, NULL );

SetWindowText( Pole, "Wpisz tekst...");

DWORD dlugosc = GetWindowTextLength (Pole);
LPSTR Bufor = (LPSTR) GlobalAlloc (GPTR, dlugosc + 1);
GetWindowText (Pole, Bufor, dlugosc + 1);

Przycisk1 = CreateWindowEx( 0, "BUTTON", "Zapis", WS_CHILD | WS_VISIBLE, 10,60,150,30, hwnd, NULL, hInstance, NULL );


ShowWindow( hwnd, nCmdShow ); // Poka¿ okienko...
UpdateWindow( hwnd );
while( GetMessage( & Komunikat, NULL, 0, 0 ) )
{
TranslateMessage( & Komunikat );
DispatchMessage( & Komunikat );
}
return Komunikat.wParam;
}



LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{





switch( msg )
{





case WM_CLOSE:
DestroyWindow( hwnd );
break;


case WM_COMMAND:
if ((HWND) lParam == Przycisk1 )
zapis();
break;

case WM_DESTROY:
PostQuitMessage( 0 );
break;





default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}

return 0;
}
void zapis()
{
LPSTR Bufor;
DWORD dwRozmiar, dwZapisane;
HANDLE hPlik;

hPlik = CreateFile( "test.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
if( hPlik == INVALID_HANDLE_VALUE ) {
    MessageBox( NULL, "Nie można otworzyć pliku.", "A to pech!", MB_ICONEXCLAMATION );
    PostQuitMessage( 0 ); // Zakończ program
}
//-------*******************************************************************************
dwRozmiar = GetWindowTextLength( hwnd ); /<----------------------------TUTAJ ERROR/    *
//-------*******************************************************************************
if( dwRozmiar == 0 ) {
    MessageBox( NULL, "Nieprawidłowy rozmiar pliku!", "Niedobrze...", MB_ICONEXCLAMATION );
    PostQuitMessage( 0 ); // Zakończ program
}

Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 );
if( Bufor == NULL ) {
    MessageBox( NULL, "Za mało pamięci!", "Ale wiocha...", MB_ICONEXCLAMATION );
    PostQuitMessage( 0 ); // Zakończ program
}

GetWindowText( hwnd, Bufor, dwRozmiar ); // skopiuj do bufora tekst z jakiegoś okna
Bufor[ dwRozmiar ] = 0; // dodaj zero na końcu stringa

if( !WriteFile( hPlik, Bufor, dwRozmiar, & dwZapisane, NULL ) ) {
    MessageBox( NULL, "Błąd zapisu do pliku", "Dupa blada!", MB_ICONEXCLAMATION );
    PostQuitMessage( 0 ); // Zakończ program
}

GlobalFree( Bufor ); // Zwolnij bufor
CloseHandle( hPlik ); // Zamknij plik
}

Prosiłbym o szybką pomoc z góry dziękuję !

P-62130
DejaVu
» 2012-08-09 19:41:27
error: 'hwnd' was not declared in this scope
Ten błąd to raczej nie ma nic wspólnego z obsługą plików... i jasno mówi co jest źle. Polecam czytanie błędów kompilacji ze zrozumieniem :)
P-62132
m4tx
» 2012-08-09 19:45:24
P-62133
krystian11102
Temat założony przez niniejszego użytkownika
error
» 2012-08-09 20:06:39
Czytałem.. Że Uchwyt Hwnd nie jest zdeklarowany.. Jestem Newbie w WinApi .. Ale może coś poradzę .. Chyba muszę wrócić do podstaw (hahaha) ..

Edit:

Dzięki DejaVu !!!!!!!!!!!!!!!!!!!!!!!!!!!! NAPRAWDĘ POMOGŁEŚ !!! XD XD musiałem na początku dodać HWND Pole; xD THX !!
P-62135
« 1 »
  Strona 1 z 1