CEdit Unicode



  • Ich lese Unicode aus einem Textfile aus und speichere den Text in einem CString Objekt. In einer Messagebox kann ich den Text ausgeben und er wird korrekt dargestellt. In einer CEdit box werden statt den Unicode zeichen nur ? oder | ausgegeben.

    Freue mich über jede Hilfe,

    Christian



  • Die MessageBox des Systems verwendet einen sogenannten "mapped Font", der bei Windows XP "Tahoma" entspricht.

    Im Dialog wird im allgemeinen "MS Sans Serif" verwendet, der manche Unicode-Zeichen nicht darstellen kann. Tahoma kann zwar auch nicht alle, aber auf jeden Fall mehr.

    Deinen Dialog auf Tahoma umzustellen ist keine gute Idee, weil dieser Font bei älteren Windows-Versionen noch fehlt.

    Am benutzt man bei Unicode-Programmen auch Fontmapping, dann wird auf jedem System der beste Font ausgewählt:

    - Visual Studio beenden
    - Backup vom Projekt machen
    - Die .rc-Datei mit einem Texteditor öffnen
    - Dialoge suchen und im Header den Font durch "MS Shell Dlg" ersetzten und den Style MS_FIXEDSYS hinzufügen.
    Also aus

    IDD_EXPORT_GLOSSARIES DIALOGEX 0, 0, 300, 201
    STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_CAPTION | WS_SYSMENU
    EXSTYLE WS_EX_CONTEXTHELP
    CAPTION "Mein Dialog"
    FONT 8, "MS Sans Serif", 0, 0, 0x1
    BEGIN
    ...
    

    mach

    [cpp]IDD_EXPORT_GLOSSARIES DIALOGEX 0, 0, 300, 201
    STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_FIXEDSYS
    EXSTYLE WS_EX_CONTEXTHELP
    CAPTION "Mein Dialog"
    FONT 8, "MS Shell Dlg", 0, 0, 0x1
    BEGIN
    ...[/cpp]

    Näheres findest du in der MSDN.


Log in to reply