Drei Fragen.



  • Hi, erst mal.
    Also ich habe wie schon erwähnt drei Fragen.

    1.Wie kann ich mit MFC eine Ordnerauswahl anzeigen lassen also wie z.b
    bei programmen wo man auswählen so wohin die sachen kopiert werden sollen.

    CFileDialog m_ldFile(TRUE);
    // Dialogfeld Öffnen zeigen und Ergebnis auffangen
    if (m_ldFile.DoModal() == IDOK)
    Wie kann ich da machen das nur *.exe datein ausgewählt werden können?

    Ich denk mal das ist nicht ganz so einfach aber wie kann ich Taste hooken das auch wenn ich ein anderes Fenster gerade im vordergrund habe die tasten gehookt werden. Das wenn ich dann z.b "C" drücke ein befehl in meinem Dialogfenster ausgefürt wird.

    Ich würde mich sehr über Antworten freuen.



  • zu 1.) Schau mal in die FAQ.

    zu 2.) Schau dir mal die weiteren Parameter des CFileDialog-Konstruktors an.



  • Original erstellt von MysticEmpires:
    **1.[code type="C++"] BROWSEINFO bi;
    TCHAR szDisplayName[MAX_PATH];
    TCHAR path[MAX_PATH];
    LPITEMIDLIST pidl;
    LPMALLOC pMalloc = NULL;
    ZeroMemory(&bi, sizeof(bi));
    bi.hwndOwner = NULL;
    bi.pszDisplayName = szDisplayName;
    bi.lpszTitle = TEXT("Ordner Wählen");
    bi.ulFlags = BIF_RETURNONLYFSDIRS;
    pidl = SHBrowseForFolder(&bi);

    if ( pidl != 0 )
    {

    if ( SHGetPathFromIDList ( pidl, path ) )
    {
    MessageBox(path);
    }

    IMalloc * imalloc = 0;
    if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
    {
    imalloc->Free ( pidl );
    imalloc->Release ( );
    }
    }

    **

    Es gibt dafür schon fertige Klassen. Obiger Code würde mir als C++-Newbie überhaupt nix bringen.
    MFC hat was mit Klassen zu tun, da will ich als C++-Programmierer auch Klassen benutzen und nicht irgend nen kryptischen WinAPI/COM-Code, den ich nicht verstehe.
    Nur mal so als Anmerkung.

    [Edit] Link zur FAQ eingefügt [/Edit]

    [ Dieser Beitrag wurde am 05.10.2002 um 21:22 Uhr von thomas80d editiert. ]



  • Also trotzdem danke aber das mit dem Filter begreife ich trotzdem nicht.

    kannst mir mal ein bespiel damit machen wo es hier die *.exe datein rausfiltert?

    void CSSDDlg::OnFileopen()
    {
    CFileDialog m_ldFile(TRUE);
    // Dialogfeld Öffnen zeigen und Ergebnis auffangen
    if (m_ldFile.DoModal() == IDOK)
    {
    //Gewählten Dateinamen ermitteln
    m_sResults = m_ldFile.GetFileName();
    //Gewählter Path ermitteln
    m_sResults2 = m_ldFile.GetPathName();
    // Dialogfeld aktualisieren
    UpdateData(FALSE);
    }
    }



  • LOL das hast schon mal gesagt aber wie verbinde ich das dann mit meinem kleinen stück source...



  • Na komm, stell dich mal nicht so dumm an. 🙂 So schwer ist das doch nicht.



  • Bin halt ein kleiner dumi ich bekomm das einfach nicht auf die reihe sagt es mir bitte einfach 😞



  • Och Gott, is das denn echt so schwer? Ich kopier mal euren Code zusammen:

    void CSSDDlg::OnFileopen()
    {
    CString filter;
    filter = "Anwendung (.exe)|.exe";
    CFileDialog m_ldFile(TRUE, NULL, NULL,NULL,filter);
    // Dialogfeld Öffnen zeigen und Ergebnis auffangen
    if (m_ldFile.DoModal() == IDOK)
    {
    //Gewählten Dateinamen ermitteln
    m_sResults = m_ldFile.GetFileName();
    //Gewählter Path ermitteln
    m_sResults2 = m_ldFile.GetPathName();
    // Dialogfeld aktualisieren
    UpdateData(FALSE);
    }
    }
    😃



  • Hat DerGhost doch schon gemacht!!! 🙄



  • Vielleicht braucht er es ordentlicher: 😃 😃

    void CSSDDlg::OnFileopen() 
    {
      CString filter = "Anwendung (*.exe)|*.exe";
      CFileDialog m_ldFile( TRUE, NULL, NULL, NULL, filter ); 
    
      // Dialogfeld Öffnen zeigen und Ergebnis auffangen
      if (m_ldFile.DoModal() == IDOK)
      {
        //Gewählten Dateinamen ermitteln
        m_sResults = m_ldFile.GetFileName();
    
        //Gewählter Path ermitteln
        m_sResults2 = m_ldFile.GetPathName();
    
        // Dialogfeld aktualisieren
        UpdateData(FALSE);
      }
    }
    

    [ Dieser Beitrag wurde am 06.10.2002 um 00:19 Uhr von Erhard Henkes editiert. ]



  • Ah danke :)) habt ihr sehr gut geschafft mir zu erklären bei mit ist das immer ganz schwär:)
    Aber jetzt wo ich es gerade teste lol mache ich wieder irgendwas falsch also ich klicke auf den button zum öffnen und was steht da?
    "All files" also habe ich als 1. gemacht zum öffnen und dann steht da als 2.
    yyyy also mit dem yyyy stimmt was nicht die sollen da nicht kommen da soll lieber sowas wie Executable files kommen 🙂


Anmelden zum Antworten