DLU umrechnen
-
Hallo,
ich hab grad mal reichlich gesucht bei google und hier im Forum. Es gibt ja viele Funktionen die von DLU in real Pixel umwandeln.
Mein Problem ist aber, dass ich das selber umrechnen muss, weil ich wissen muss, wie groß ich das gesamte Dialogfeld machen darf (wegen 800x600).
Dort steht ja, dass die horizontale DLU der mittelwert der Breite der Dialogfeldschrift / 4 und die vertikale / 8 ist.
Irgendwie kann ich mir darunter aber nicht wirklich was vorstellen. Klar, die Breite (bei 16x8 wäre 16) das bei allen anddieren und durch die Anzahl teilen und dann nochmal durch 4. Wäre das dann ein pixel? Muss ich auch den Text bei den Radiobuttons usw mitzählen?
-
Das mit den DLUs hängt mit der Fontauflösung zusammen.
Damit Anwendungen immer noch vernünftig aussehen, wenn du die DPI-Einstellungen ( in Systemsteuerung -> Anzeige -> Erweitert -> Allgemein ) von 96 DPI auf 120 DPI änderst gibt es eben diese Formeln.Ich denke mal, die Formeln sind klar. Hierfür gibts ja auch Code wie Sand am Meer:
http://www.noveltheory.com/techpapers/dialog_units.htmWas die mittlere Breite und Höhe eines Fonts ist, das erhälst du aus den Textmetrics.
Zeigt der Dialog den Systemfont an, kannst du das mit GetDialogBaseUnits ausrechnen, ansonsten musst du das halt per Hand machen. Schau dir doch mal die Remarks - Sektion von GetDialogBaseUnits an.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/getdialogbaseunits.asp