(WinAPI)Zwracanie ścieżek z GetOpenFileName() do dynamicznej tablicy.
Ostatnio zmodyfikowano 2013-12-16 10:15
xordi Temat założony przez niniejszego użytkownika |
(WinAPI)Zwracanie ścieżek z GetOpenFileName() do dynamicznej tablicy. » 2013-12-09 05:34:05 Postanowiłem się zapytać kolegów o ocenę mojego myślenia, gdyż męczyłem się z tym problemem już jakiś czas, a zaznaczam że jestem początkujący, no więc chciałem napisać funkcję która po naciśnięciu jednego z przycisku wywoła funkcję GetOpenFileName() i wczyta ścieżkę pliku do dynamicznej "tablicy charów". Problem polegał na tym że nie wiadomo było ile plików doda kolejno user, i by można było je dodawać na bierząco, jedyną stałą jaka była dana to długość ścieżki z MAX_PATH. Spójżcie, czy moje rozumowanie jest ok, i czy nie będzie żadnych wycieków pamięci: na początku: int ileplikow = 0; OPENFILENAME ofn; char ** sdNazwaPliku = new char *[];
A potem w obsłudze zdarzeń: case WM_COMMAND: { wmId = LOWORD( wParam ); wmEvent = HIWORD( wParam ); if((( HWND ) lParam ) == hListBox ) { if( wmEvent == LBN_DBLCLK ) { int index = SendMessage( hListBox, LB_GETCURSEL, 0, 0 ); SendMessage( hText, WM_SETTEXT, 0,( LPARAM ) sdNazwaPliku[ index ] ); } } if(( HWND ) lParam == g_hPrzycisk ) { sdNazwaPliku[ ileplikow ] = new char[ MAX_PATH ]; char sNazwaPliku[ MAX_PATH ] = ""; ZeroMemory( & ofn, sizeof( ofn ) ); ofn.lStructSize = sizeof( ofn ); ofn.hwndOwner = hwnd; ofn.lpstrFilter = "Wszystkie pliki *.*\0*.*\0"; ofn.nMaxFile = MAX_PATH; ofn.lpstrFile = sNazwaPliku; ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if( GetOpenFileName( & ofn ) ) { for( int i = 0; i < MAX_PATH; i++ ) { sdNazwaPliku[ ileplikow ][ i ] = sNazwaPliku[ i ]; } SendMessage( hListBox, LB_ADDSTRING, 0,( LPARAM ) strrchr( sdNazwaPliku[ ileplikow ], '\\' ) + 1 ); ileplikow++; } } if(( HWND ) lParam == g_hDelete ) { }
Macie jakieś może zastrzeżenia?? A może powinienem to inaczej rozwiązac? No i tutaj jeszcze się pojawia pytanie... Jak napisać funkcję która będzie usuwała rekordy. Bo właśnie myślę nad napisaniem klasy z tego. |
|
RazzorFlame |
» 2013-12-09 15:17:47 Przecież możesz użyć std::vector z #include <vector> |
|
xordi Temat założony przez niniejszego użytkownika |
I tak.... » 2013-12-16 10:15:37 I tak też zrobiłem... ;) Jak ktoś chce kod to PW xordi(at)wp.pl |
|
« 1 » |