Text bei Standartdialogfenstern (CFiledialog/CColordialog/...) ändern



  • Guten Tag.

    Ich soll ein Programm schreiben bei dem die Sprache im Programm unabhängig von der Sprache des Systems sein soll.

    Jetzt stellt sich mir die Frage wie ich dass Ganze bei Standarddialogfenstern wie CFileDialog usw. machen soll.

    Gibt es da einen praktikablen und sauberen weg die Texte zu ändern?
    Oder ist da der einzige Weg sich die ID des Elementes zu besorgen und über SetWindowText die Texte zu ändern?
    Ich hab nämlich keine Lust die Dialogfenster alle nachzuprogrammieren, nur weil texte geändert werden müssen.

    Ich verwende aktuel Visual Studio2005 und das Programm wird mit statischer Bibleothek erzeugt.



  • Hier ein Beispiel für "CFileDialog":

    // Objekt zum Speichern erzeugen
          CFileDialog m_DateiZiel(FALSE, NULL, strQuelle, OFN_OVERWRITEPROMPT,  
          strDateiEndung);
    
          // Text für die Titelleiste des Speicher-Dialogs ändern
          m_DateiZiel.m_ofn.lpstrTitle="Sicherungsort wählen...";//Geändert
    


  • Du wirst schon ein etwas Arbeit leisten müssen. Von selbst
    wird sich nichts ändern! 😉



  • Den Titel ändere ich in den meißten Fällen sowiso damit der Benutzer ein paar Zusatzinformationen bekommt.

    Mir geht es um die Beschriftung der Schaltflächen, den statischen Text,... vom Dialogfenster.

    HermannGo schrieb:

    Du wirst schon ein etwas Arbeit leisten müssen. Von selbst
    wird sich nichts ändern! 😉

    Dass ist mir klar.
    Aber über die Element-ID und SetWindowText die Texte zu ändern ist keine saubere Lösung.
    Und alles selbst neu programieren will ich auch nicht umbedingt.

    Desswegen möchte ich wissen ob es eine saubere Lösung dafür gibt.
    Denn ich bin sicher nicht der Erste der soetwas machen will.



  • Hallo -Sepp-,

    die Beschriftung von z.B. Buttons oder statischen Texten kannst Du doch einfach in dessen Eigenschaften ändern. Ich verstehe nicht ganz wo Dein Problem liegt.
    😕



  • Kannst du mir bitte erklähren wie ich SICHER an diese Eigenschaftseinstellungen bei CFileDialog, CColordialog,... rankomme ohne dass ich versehentlich ein falsches Element erwische?
    Wenn ich die ID oder den Namen als Suchkriterium verwende um an die CWnd zu kommen, kann man sich nie sicher sein, dass diese nach einem Update, Wechsel der VS Version ,... immer noch die Selben sind.
    Desswegen frage ich ja ob es eine Möglichkeit gibt an die Texte ranzukommen ohne dass man nach Änderung der Element-ID, des originalen Textinhaltes oder der Position alles neu machen muss.



  • Ich arbeite jetzt vorerst mit einem Hook und setze die Texte über SetWindowText und hoffe dass MS die ID's und Elemente nicht allzuoft ändert.



  • Ich habe dass Ganze gelöst, indem ich diese Seite als Vorlage verwendet habe:
    http://www.codeproject.com/KB/dialog/imagepreviewdialog.aspx

    Doch leider schaffe ich es nicht beim Speichern den Text der Speicherschaltfläche zu ändern.

    Dass Ändern des Textes in OnInitDialog funktioniert nur beim Ladefenster.
    wenn man das Dialogfenster als Speicher-Fenster öffnet, kann man den Text nicht ändern.
    Dass Einzige was bis jetzt ein wenig funktioniert hat ist den Text in OnNotify des Elternfensters der CListCtrl zu ändern.
    Aber da muß man erst einmal mit der Maus über die ListCtrl fahren damit der Text geändert wird.

    Ich weis langsam nicht mehr weiter.


Anmelden zum Antworten