Problem z GetSaveFileName() i wskaźnikami
Ostatnio zmodyfikowano 2011-08-18 12:42
xevuel Temat założony przez niniejszego użytkownika |
Problem z GetSaveFileName() i wskaźnikami » 2011-08-16 14:09:41 Chciałem napisać funkcję zapisującą dane do pliku. Użyłem struktury OPENFILENAME:
OPENFILENAME ofn; ZeroMemory( & ofn, sizeof( ofn ) ); ofn.lStructSize = sizeof( OPENFILENAME ); ofn.lpstrFilter = "Wszystkie pliki\0*.*\0";
char * sFileName = NULL; sFileName =( char * ) filename.c_str();
ofn.nMaxFile = 4096; ofn.lpstrFile = sFileName; ofn.lpstrDefExt = "txt"; ofn.Flags = OFN_NONETWORKBUTTON | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; if( GetSaveFileName( & ofn ) > 0 ) info( sFileName );
Gdzie filename jest zmienną typu string. I tutaj jest problem. ofn.lpstrFile wymaga typu char, a ja postanowiłem użyć wskaźnika, jak u góry. Kiedy wywołuję tę funkcję w odpowiedzi na dwukrotne kliknięcie użytkownika, czasami dostaję błąd (raport do Microsoftu :/). Wszystko zależy od tego, w którym miejscu kliknie user. Jak to zmienić, aby nie korzystało ze wskaźnika, jednoczesnie nie rezygnując z typu string? Zastanawiałem się czy w momencie przypisania filename nie utworzyć jeszcze jednej zmiennej w stylu char filename_c[] = "test"; , ale może ktoś ma jakiś pomysł? |
|
DejaVu |
» 2011-08-16 14:16:58 |
|
xevuel Temat założony przez niniejszego użytkownika |
» 2011-08-16 14:23:52 w tym kodzie zmienna szFile jest inicjowana szFile[ 0 ] = '\0'; , a mi chodzi o to żeby ją wczytać ze stringa filename. |
|
DejaVu |
» 2011-08-16 15:16:09 No to przeczytaj na msdn'ie jak prawidłowo ustawić pola tej struktury... |
|
xevuel Temat założony przez niniejszego użytkownika |
» 2011-08-16 15:44:50 Prawidłowo mi sie ustawia, jak wpisuję za pomocą cudzysłowów i korzystam z char[]. Kiedy korzystam ze wskaźników, występuje błąd. Gdzie w tym kodzie jest błąd? I czy prawidłowo będzie, jak zrobię coś takiego:
char filename_c[] = * filename.c_str()
? |
|
DejaVu |
» 2011-08-16 15:52:31 |
|
xevuel Temat założony przez niniejszego użytkownika |
» 2011-08-16 15:53:44 aha... to jak przekonwertować ze string do char? |
|
DejaVu |
» 2011-08-16 15:58:46 char * xxx =( char * ) napis.c_str();
|
|
« 1 » 2 3 |