Eingsetzte Schrift (WM_SETFONT) wird "übermalt" [OK]



  • EDIT: Hat sich erledigt. Lag nur daran, dass sich aufgrund einer falsch aufgebauten if-Bedingung die Schrift vom System deregistriert hat (RemoveFontResourceEx) und dadurch hat das System dann einfach nur die Standard-Schrift verwendet.Da dieser Beitrag kein wirkliches Problem löst, würde ich einen Mod bitten diesen wieder zu löschen.

    Ich verwende für diverse Elemente (Edits/Statics) eine eigene Schrift. Während die Editboxen das ohne Zwang annehmen (subclassed-edit), machen die statischen Controls Probleme.
    Gedacht war das ich dem Static die schrift via WM_SETFONT zuweise. Während das Ganze im Fenster selbst funktioniert (z.b Wenn ich die Schrift mittels Button wechsle), reicht es dann schon aus in ein anders Fenster zu tabben oder ein anderes Fenster über das Static zu schieben. Verdeckt dieses Das Static dabei nicht ganz, kann man noch auf der einen Hälfte die eigene und auf der neu gezeichneten anderen Hälfte die Standard-Arial-Schrift lesen (was ziemlich komisch aussieht).

    Meine Frage: Was fehlt hier, um das zu verhindern? Ich weiß, dass ich etwas mit der WM_PAINT anstellen muss, doch ein WM_SETFONT reicht nicht und ich denke ich muss Font-Handle nicht in ein DC einspannen (Dazu is ja WM_SETFONT im Grunde da).

    //Static -- WM_CREATE des Parent-Windows
    CreateWindowEx(0,"static","Testtext",WS_CHILD|WS_VISIBLE|SS_CENTER,0,0,0,0, wnd,(HMENU)STC_SAMPLE,0,0); //(Positionierung in WM_SIZE)
    
    // In der gleichen Funktion
    
    if (SampleFont == NULL)
    {
       SampleFont = CreateFont(45,0,0,0,FW_NORMAL, 0,0,0,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"MyFont");
    
      SendMessage(GetDlgItem(wnd,STC_SAMPLE),WM_SETFONT,(WPARAM)SampleFont,(LPARAM)1);
    }
    
    /// Die WM_PAINT vom Parent bleibt leer, die vom Static sollte sich selbstverwalten, aber man sieht eh wozu das führt.....
    

Anmelden zum Antworten