CFileDialog, Wie einen Filter ergänzen, um Dateien ein/auszublenden ?



  • Ich habe eine Funktion geschrieben, welche, man mit der Übergabe eines Dateipfades aufruft. Diese Funktion erkennt dann, ob bei der Datei bestimmte Kriterien zutreffen. Falls ja, wird ein true zurückgeliefert, sonst ein false.

    Ich möchte in meinem CFileDialog

    CFileDialog cfd(TRUE,NULL,NULL,NULL,NULL);
    cfd.DoModal();

    nur die Dateien angezeigt bekommen, auf welche meine Funktion ein true zurückliefert. (Also vor jeder Datei die eingeblendet wird, wird einmal meine Funktion aufgerufen, und falls ein true zurück kommt soll die Datei angezeigt werden, sonst ausgeblendet). Ist dies überhaupt mit CFileDialog umsetzbar ? Oder müsste ich da einen eigenen kleinen Dateibrowser für schreiben ?



  • da musst du dir den filter zurechtbasteln

    zb
    "All Files (.)|.||"
    + filter
    "All Files (.)|.|Pictures (.jpg)|.jpg||"

    das kannste ja ganz bequem in einer funktion erledigen

    und dann halt

    CString GetFilter();
    CFileDialog fOpen(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, GetFilter());



  • Die Dateiendung spielt keine Rolle. Dafür brauche ich keinen Filter.

    Es geht mir darum, dass nur Dateien angezeigt werden, welche z.B. im Binärmodus geöffnet an bestimmten Stellen Merkmale erfüllen. Dafür hatte ich eine Funktion geschrieben, an welche der Dateipfad übergeben wird. Werden die Merkmale erfüllt wird ein true zurückgeliefert.

    CFileDialog möchte ich mit dieser Funktion koppeln, so dass mir im Open Fenster nur die Dateien angezeigt werden, auf welche meine Funktion mir ein true zurückliefert.



  • So etwas denk ich nicht dass es mit CFileDialog möglich ist.
    Für diesen speziellen fall musst du dir wohl oder übel selber ein Öffnen Dialog bauen.



  • Mr Evil schrieb:

    So etwas denk ich nicht dass es mit CFileDialog möglich ist.
    Für diesen speziellen fall musst du dir wohl oder übel selber ein Öffnen Dialog bauen.

    danke, hatte ich schon fast vermutet 😞



  • Du könntest mit GetOFN (=>OPENFILENAME) arbeiten und eine Hook-Prozedur hinterlegen.


Anmelden zum Antworten