Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dialog Units - wat dat für ne Ka**e

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 11.08.2009, 09:26    Titel: Dialog Units - wat dat für ne Ka**e Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 11.08.2009, 13:13    Titel: Antworten mit Zitat

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 zwinkern
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 11.08.2009, 14:06    Titel: Antworten mit Zitat

Fall es dich trotzdem noch interessiert:

MapDialogRect rechnet von DLU auf Pixel um: http://msdn.microsoft.com/en-us/library/ms645502(VS.85).aspx

Mehr dazu habe ich im Englischen FB Forum einmal erfragt:
http://www.freebasic.net/forum/viewtopic.php?p=120451
und weiters im Engl. FB Forum:
http://www.freebasic.net/forum/viewtopic.php?t=9683
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 11.08.2009, 14:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 11.08.2009, 19:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 11.08.2009, 20:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz