Zdziwiony Temat założony przez niniejszego użytkownika  | 
Jak 'uwidocznić' zmienną ? » 2013-12-21 19:20:54 Witam mam taki oto kod:  HWND hwnd;
  hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Notatnik v0.1", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 700, 500, NULL, NULL, hInstance, NULL );
  g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE, 1, 100, 150, 30, hwnd, NULL, hInstance, NULL );
  HWND hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 100, 1, 680, 500, hwnd, NULL, hInstance, NULL );
 
  DWORD dlugosc = GetWindowTextLength( hText ); LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText, Bufor, dlugosc + 1 );
 
 
  if( hwnd == NULL ) {     MessageBox( NULL, "Blad inicjalizacji programu!", "Blad!", MB_ICONEXCLAMATION );     return 1; }
  ShowWindow( hwnd, nCmdShow );  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_DESTROY:     PostQuitMessage( 0 );     break; case WM_COMMAND:     if(( HWND ) lParam == g_hPrzycisk )     {         std::string Bufor2;         Bufor2 = Bufor;         std::string nazwa;         nazwa = "pliktest.txt";         std::ofstream plik( nazwa.c_str(), std::ios::out );         std::string napis;         plik.write( & napis[ 0 ], Bufor2.length() );         plik.close();     }     break;          default:     return DefWindowProc( hwnd, msg, wParam, lParam ); }
  return 0; }
 Lub inny zapis:  HWND hwnd;
  hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Notatnik v0.1", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 700, 500, NULL, NULL, hInstance, NULL );
  g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE, 1, 100, 150, 30, hwnd, NULL, hInstance, NULL );
  HWND hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 100, 1, 680, 500, hwnd, NULL, hInstance, NULL );
  std::string Bufor2; DWORD dlugosc = GetWindowTextLength( hText ); LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText, Bufor, dlugosc + 1 ); Bufor2 = Bufor;
 
 
  if( hwnd == NULL ) {     MessageBox( NULL, "Blad inicjalizacji programu!", "Blad!", MB_ICONEXCLAMATION );     return 1; }
  ShowWindow( hwnd, nCmdShow );  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_DESTROY:     PostQuitMessage( 0 );     break; case WM_COMMAND:     if(( HWND ) lParam == g_hPrzycisk )     {         std::string nazwa;         nazwa = "pliktest.txt";         std::ofstream plik( nazwa.c_str(), std::ios::out );         std::string napis;         plik.write( & napis[ 0 ], Bufor2.length() );         plik.close();     }     break;          default:     return DefWindowProc( hwnd, msg, wParam, lParam ); }
  return 0; }
 W obydwóch przypadkach komplinator twierdzi że zmienna Bufor i Bufor2 nie istnieją... w miejscu:          plik.write( & napis[ 0 ], Bufor2.length() );  ) I tu nasuwa się moje pytanie... co zrobić, żeby zmienna Bufor oraz Bufor2 były widoczne w CAŁYM programie, a nie tyko do obsługi zdarzeń ? (oczywiście bez niej włącznie..) Chcę, aby program z pola tekstowego zapisał dane do pliku.txt, na razie udało mi się tylko utworzyć plik.txt, a z zapisem danych do niego po kliknięciu przycisku mam problem ;/  Pozdrawiam i proszę o pomoc. EDIT: Dam loga z komplinacji: C:\Users\Łukasz\Desktop\Projekt\Notatnik\main.cpp: In function 'LRESULT WndProc(HWND, UINT, WPARAM, LPARAM)': C:\Users\Łukasz\Desktop\Projekt\Notatnik\main.cpp:91:18: error: 'Bufor' was not declared in this scope Process terminated with status 1 (0 minutes, 0 seconds) 1 errors, 1 warnings (0 minutes, 0 seconds) EDIT2: Pomoże ktoś ? Źle zapisałem, czy po prostu nie można używac <fstream> w WinAPI ?  | 
Zdziwiony Temat założony przez niniejszego użytkownika  | 
» 2013-12-21 20:21:49 Dobra nikt nie pomógł, ale jakos sam sobie poradziłem :P Zrobiłem coś takiego: HWND hwnd;
  hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Notatnik v0.1", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 700, 500, NULL, NULL, hInstance, NULL );
  g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE, 1, 100, 150, 30, hwnd, NULL, hInstance, NULL );
  hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 100, 1, 680, 500, hwnd, NULL, hInstance, NULL );
 
  if( hwnd == NULL ) {     MessageBox( NULL, "Blad inicjalizacji programu!", "Blad!", MB_ICONEXCLAMATION );     return 1; }
  ShowWindow( hwnd, nCmdShow );  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_DESTROY:     PostQuitMessage( 0 );     break; case WM_COMMAND:     if(( HWND ) lParam == g_hPrzycisk )     {         zapisz();     }     break;          default:     return DefWindowProc( hwnd, msg, wParam, lParam ); }
  return 0; } void zapisz() { DWORD dlugosc = GetWindowTextLength( hText ); LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText, Bufor, dlugosc + 1 ); std::string Bufor2; Bufor2 = Bufor; std::string nazwa; nazwa = "pliktest.txt"; std::ofstream plik( nazwa.c_str() ); std::fstream plik2( nazwa.c_str(), std::ios::out ); plik << Bufor; plik.close(); } Powiedzcie tylko czy składnia poprawna i można zamknąć :)  |