PopFileOpenDlg funktioniert nicht



  • Hi Leute!
    Könnt ihr mir vielleicht sagen, warum die die folgenden Funktionen nicht funktionieren? Das Programm wird zwar erfolgreich compiliert, doch es erscheint kein "Datei öffnen" - Dialog. Woran könnte das liegen?

    Vielen, vielen Dank schonmal für eure Antworten!

    PS: Liegt das Problem vielleicht daran, dass ich nicht Windows NT mit Unicode benutze? (Nur eine Vermutung!!)

    #include "StdAfx.h"
    #include <windows.h>
    #include <commdlg.h>
    
    static OPENFILENAME ofn;
    
    // Initialisierung der OPENFILENAME-Struktur
    void PopFileInitialize (HWND hwnd)
    {
    // welche Dateitypen sollen ausgewählt werden können
       static TCHAR szFilter[] = TEXT ("Textdateien (*.TXT)\0*.txt\0") \
       TEXT ("ASCII-Dateien (*.ASC)\0*.asc\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 ("txt");
       ofn.lCustData = 0L;
       ofn.lpfnHook = NULL;
       ofn.lpTemplateName = NULL;
    }
    
    // Den "Öffnen" Dialog anzeigen und das Handle zum File zurückliefern
    BOOL PopFileOpenDlg (HWND window, PTSTR pstrFileName, PTSTR pstrTitleName)
    {
       ofn.hwndOwner = window;
       ofn.lpstrFile = pstrFileName;
       ofn.lpstrFileTitle = pstrTitleName;
       ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
    
       return GetOpenFileName (&ofn);
    }
    

    PopFileOpen und PopFileInitialize werden in meiner Anwendung folgendermaßen aufgerufen:

    #include "StdAfx.h"
    #include <windows.h>
    #include "resource.h"
    #include <commdlg.h>
    
    void PopFileInitialize (HWND);
    BOOL PopFileOpenDlg (HWND, PTSTR, PTSTR);
    static TCHAR szFileName[MAX_PATH], szTitleName[MAX_PATH];
    PopFileOpenDlg (hwnd, szFileName, szTitleName);
    
    //[...]
    //[...]
    //[...]
    


  • Hallo,

    wo ist denn da der Aufruf, ich sehe keinen... 😕

    MfG



  • Wie kann ich denn die Funktion(en) aufrufen?



  • Die WinMain-Methode habe ich absichtlich beim Kopieren herausgenommen - man
    muss ja nicht den ganzen Code zeigen 😃



  • du mußt doch irgendwo in WinMain (oder der Fenster-Prozedur) PopFileInitialize und PopFileOpenDlg in dieser Reihenfolge hintereinander aufrufen, dann müßte man auch den Dialog sehen. Wenn du also nicht zeigst, wo der Aufruf in WinMain (oder in der Fenster-Prozedur, die die Nachrichten verarbeitet) steht, wird es schwierig, dir zu helfen...

    MfG


Anmelden zum Antworten