Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 11.08.2009, 09:26 Titel: Dialog Units - wat dat für ne Ka**e |
|
|
Sorry für den Titel, aber ich bin mal wieder von Windows generft.
Nun hab ich es endlich geschafft meinen Dialog in einer DLL zu erstellen und stelle mit erschrecken fest das Windows für Dialog ne andere Maßeinheit verwendet.
D.h. ich kann die Größe von Elementen nicht in Pixeln angeben, sondern nur in DialogUnits und die sind irgendwie vom eingestellten Font abhängig. Die kann man zwar umrechnen, allerdings klappt das irgendwie nicht so wie ich will.
Das Problem ist folgendes. Ich benutze die DIALOGS.BAS um meinen Dialog zu erzeugen. http://www.freebasic.net/forum/viewtopic.php?t=5667
In der Funktion DIALOG wird zunächst das Template angelegt bevor der Dialog erstellt wird. Also wollte ich hier meine Pixelwerte einfach in DialogUnits umrechnen - aber leider klappt das eben nicht. Der Dialog der dann entsteht stimmt nicht mit den gewünschten Pixelmaßen überein.
Code: | Dim unit As Long
unit = GetDialogBaseUnits()
x = ( x * 4 ) / LoWord( unit )
cx = ( cx * 4 ) / LoWord( unit )
y = ( y * 8 ) / HiWord( unit )
cy = ( cy * 8 ) / HiWord( unit )
|
Nun gebe ich in dem Template auch meinen gewünschten Font an. Aber die Werte für die Größe des Dialogs werden ja ebenfalls schon hier eingestellt. Ich denke das da das Problem liegt - oder?
Frage: Wie kann ich die Pixelgröße richtig in DialogUnits umrechnen, oder anders gesagt, wie kann ich so nen verdammten Dialog pixelgenau erzeugen? _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 11.08.2009, 13:13 Titel: |
|
|
Ok, vergesst es. Nicht das ich ne Antwort hätte, aber ich erstelle den Dialog jetzt mit dem Resource Editor, da sind mir die Maße egal  _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 11.08.2009, 14:37 Titel: |
|
|
Jap, das ist soweit korrekt, aber auch diese Funktion braucht ja den Handle des Dialogs - der ja aber noch gar nicht existiert da ich ja nur das Template mit Daten "fülle". _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 11.08.2009, 19:52 Titel: |
|
|
E-P-S hat Folgendes geschrieben: | D.h. ich kann die Größe von Elementen nicht in Pixeln angeben, sondern nur in DialogUnits und die sind irgendwie vom eingestellten Font abhängig. |
So falsch ist das mit der speziellen Masseinheit überhaupt nicht! Immer daran denken, dass sich der Benutzer unter "Systemsteuerung"/"Anzeige" die Schriftart auswählen kann, speziell die Auswahl ob 96 dpi oder 120 dpi.
Mir sind genügend Beispiele von schlecht programmierter Windowsprogrammen bekannt, welche entsprechende Layoutprobleme bei grossen Schriftarten besitzen.
Aus demselben Grund ist auch bei gutem Webdesign Pixel verpöhnt und das W3C empfiehlt ebenfalls "em", also als Faktor zur Grundschrifthöhe die Masse zu definieren. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 11.08.2009, 20:11 Titel: |
|
|
Das mag ja sein und in diesem Punkt stimme ich auch völlig überein. Nur dann bitte EINE Variante und nicht irgendwie mischen. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
|