Seltsame Design unterschiede



  • Hallo zusammen!

    Wie schon aus früheren Threads von mir hervorgegangen ist, habe ich eine ProgressBar selbst gezeichnet. Leider ergibt sich dabei folgendes Problem:

    Auf WindowsVista mit "klassischem Design" sieht die ProgressBar normal aus, während die Schrift und die Größe der PB bei WindowsXP mit der gleichen Darstellung (klassisch) extrem abweicht. Hier mal ein Screenshot zum Vergleich (Oben Vista, unten XP):

    http://s3.bilder-hosting.de/tbnl/F5M1E.jpg

    Wäre super, wenn mir auch hier jemand weiterhelfen könnte, denn da bin ich wirklich Ratlos.

    Grüße veryxRV


  • Mod

    Setzt Du denn den Font auch entsprechend (SetFont)? Dies würde ich in jedem Fall tun.
    Zudem sieht es irgendwie so aus, als ob Du die Größe nicht ganz korrekt berechnest.



  • Der font ist gesetzt und die Größe passt sich an die Column Breite und die Item höhe an, sollte also eig kein Problem sein!


  • Mod

    Kann es sein, dass dieser Progress bar in einem List View eingebettet ist. Das wäre sowieso eine Konstellation, die ich als unsupported ansehen würde.

    Benutze in solch einem Fall lieber NM_CUSTOMDRAW um so etwas darzustellen.

    Im allgemeinen sind die diese Control nicht dazu gebaut weitere Child Controls zu hosten. Alleine schon weil auch die Themes wieder im Parent zeichnen... da kann nur Chaos bei rum kommen.



  • Die Font-Größe wird doch anhand der Dialog-Einheit-zu-Pixel-Relation berechnet oder nicht? Vielleicht ist die bei Windows anders (obwohl die glaubich nur vom Verhältnis der Bildschirmauflösung abhängt). Kannst evtl mal probieren, die Font-Höhe in Pixeln auszurechnen und dann in Dialog-Einheiten umzuwandeln.



  • Na ja, auf allen anderen Windows Versionen geht es ja.

    Die Progress bar zeichne ich selbst in das ListView. Was genau bewirkt NM_CUSTOMDRAW und wo muss ich es einsetzen?



  • Badestrand schrieb:

    Die Font-Größe wird doch anhand der Dialog-Einheit-zu-Pixel-Relation berechnet oder nicht? Vielleicht ist die bei Windows anders (obwohl die glaubich nur vom Verhältnis der Bildschirmauflösung abhängt). Kannst evtl mal probieren, die Font-Höhe in Pixeln auszurechnen und dann in Dialog-Einheiten umzuwandeln.

    Also die FontWidth und -Height wird per Logfont an das HDC übergeben. Die verwendete Einheit ist dabei soweit ich weiß pixel, deswegen sollte es daran nicht liegen. Aber auch dieses Proglem tritt wieder nur bei WinXP mit deaktiviertem Design auf...

    EDIT: Ich glaube, ich weiß warum die ProgressBar kleiner ist und zwar:

    Normalerweise wird um den zu zeichnenden Bereich dieser standard 3D-Ramen gezeichnet. Dies unterdücke ich jedoch, indem ich die verursachende Message abfange, bzw. nur bestimmte Messages an die Default-Schleife durchlasse. Jedoch glaube ich, dass der Ramen zwar nicht dargestellt wird, aber der Bereich in dem er gezeichnet würde, dennoch "reserviert" bzw. nicht dargestellt wird. Dies müssre man dann unterbinden. Ist klar was ich damit meine?

    Hier ein Screenshot zur Verdeutlichung:

    http://www.bilder-space.de/show.php?file=oaUUFr8wfoZqtuL.jpg
    (Oben mit Ramen und unten ohne Ramen)



  • Kleiner Push, falls niemand das Update mitbekommen haben sollte...


Anmelden zum Antworten