GetWindowText ...



  • Ich habe eine MDI Anwendung erstellt, und die View Klasse von
    CEditView abgeleitet.
    Mit

    OnOpenDocument("Datei1.txt");
    OnOpenDocument("Datei2.txt");
    OnOpenDocument("Datei3.txt");
    OnOpenDocument("Datei4.txt");

    erstelle ich vier Edit-Fenster.

    Dann habe ich eine Schleife, die einen Zeiger ( pWnd ) über
    die Fenster iteriert.

    CString str;
    while ...
    {
    pWnd->GetWindowText(str);
    if ( str == "Datei2.txt" ) AfxMessageBox(str);
    }

    Es kommt aber keine Ausgabe.
    Wenn ich folgendes mache, kommt eine Ausgabe.

    while ...
    {
    pWnd->GetWindowText(str);
    if ( str == "Datei2" ) AfxMessageBox(str);
    }

    Het jemand eine Erklärung ?



  • OnOpenDocument(...) ruft CDocument::SetPathName() auf.

    Dort wird der Dateiname aus dem vollen Pfad extrahiert und auch die Endung entfernt und dann SetTitle(...) damit aufgerufen.

    Dieser Titel wird benutzt um den Fenstertitel zu erzeugen (wenn mehrere Views von einem Doc dann wird der Text erweitert "Datei1:1" "Datei1:2").

    Der volle Pfad wird aber intern noch gespeichert.



  • Ich habe meinen Quelltext auf einem anderen Rechner compiliert und
    festgestellt, dass ich dort nach "Datei2.txt" und nicht nach "Datei2"
    suchen musste. Wieso das ?



  • ist ein reine vermutung, aber werden auf deinem rechner im explorer die dateierweiterungen angezeigt (optionen->bei bekannten ausgblendet)?


  • Mod

    dwo77 schrieb:

    ist ein reine vermutung, aber werden auf deinem rechner im explorer die dateierweiterungen angezeigt (optionen->bei bekannten ausgblendet)?

    Deine Vermutung trifft zu 100% zu. Die Sghell Funktion, die hier verwendet wird den Dateinamen zu extrahieren verwendet genau diese Einstellung, ob eben die Extension angezeigt wird oder nicht.

    @Georg C++: Welchen Zweck haben die Schleifen. Du kannst Dir doch die Zeiger auf die Dokumente oder Fenster weitaus einfacher besorgen. Zudem benötigst Du diese normalerweise gar nicht...


Anmelden zum Antworten