Standarddialog "Datei"
-
Guten Abend Alle miteinander,
ich habe mal wieder ein Problem. Es geht diesmal um den Standarddialog zum Auswählen und anschl. einlesen einer *.csv-Datei. Es funktioniert alles prima, wenn ich tatsächlich eine Datei auswähle. Wähle ich keine aus, drücke also "Abbrechen", so stürzt mein Programm mächtig ab. Hat einer eine Idee dazu? Meine Vermutung ist, dass irgendeine Variable keinen oder einen uninitialisierten Inhalt hat. Ist das so?
Danke schon mal für Eure Hilfe!
Hier noch ein bisschen Code:
// Definition der Hauptprozedur LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { COLORREF clrOldTextColor; switch (message) { case WM_CREATE: { // Standarddialoge initialisieren PopFileInitialize (hWnd) ; return 0; } case WM_COMMAND: switch(LOWORD(wParam)) { //Menüpunkt "Datei" case ID_DATEI_IMPORT: { // Hier Standard-File-Dialog einfügen PopFileOpenDlg (hWnd, szFileName, szTitleName); // Datei importieren DateiImport(hWnd); return 0; } case ID_DATEI_ANZEIGEN: { DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG9),hWnd,DlgProc9); return 0; } case WM_PAINT: { PAINTSTRUCT paintst; HDC hDC = BeginPaint(hWnd, &paintst); RECT rcClient; SetRect(&rcClient, 0, 0, 0, 0); GetClientRect(hWnd, &rcClient); nOldBkMode = SetBkMode(hDC, TRANSPARENT); clrOldTextColor = SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT)); DrawText( hDC, "", -1, &rcClient, DT_SINGLELINE| DT_CENTER| DT_VCENTER ); SetTextColor(hDC, clrOldTextColor); SetBkMode(hDC, nOldBkMode); EndPaint(hWnd, &paintst); return 0; } case WM_DESTROY: { PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd, message, wParam, lParam); } void PopFileInitialize (HWND hwnd) { static TCHAR szFilter[] = TEXT ("ASCII-Dateien (*.CSV)\0*.csv\0") \ TEXT ("Textdateien (*.TXT)\0*.txt\0") \ TEXT ("Alle Dateien (*.*)\0*.*\0\0") ; ofn.lStructSize = sizeof (OPENFILENAME) ; ofn.hwndOwner = hwnd ; ofn.hInstance = NULL ; ofn.lpstrFilter = szFilter ; ofn.lpstrCustomFilter = NULL ; ofn.nMaxCustFilter = 0 ; ofn.nFilterIndex = 0 ; ofn.lpstrFile = NULL ; // Bei Öffnen bzw. Schließen gesetzt ofn.nMaxFile = MAX_PATH ; ofn.lpstrFileTitle = NULL ; // Bei Öffnen bzw. Schließen gesetzt ofn.nMaxFileTitle = MAX_PATH ; ofn.lpstrInitialDir = NULL ; ofn.lpstrTitle = NULL ; ofn.Flags = 0 ; // Bei Öffnen bzw. Schließen gesetzt ofn.nFileOffset = 0 ; ofn.nFileExtension = 0 ; ofn.lpstrDefExt = TEXT ("csv") ; ofn.lCustData = 0L ; ofn.lpfnHook = NULL ; ofn.lpTemplateName = NULL ; } BOOL PopFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) { ofn.hwndOwner = hwnd ; ofn.lpstrFile = pstrFileName ; ofn.lpstrFileTitle = pstrTitleName ; ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT ; return GetOpenFileName (&ofn) ; }
[ Dieser Beitrag wurde am 18.01.2003 um 22:54 Uhr von oj0169 editiert. ]
-
Sorry, hat sich erledigt. Meine Vermutung war richtig. Die Felder szFileName, szTitleName waren nicht initialisiert.
Trotzdem danke!
Oliver