ok wir reden von 2 verschiedenen Sachen die der User machen kann.Dieter hat geschrieben:Man kann den Anwender nicht daran hindern, eine andere Bildschirmauflösung zu wählen.
bei DPI-aware geht es um folgenden Effekt :
aus den Snapshot kann man sehen das die "echte" Auflösung 1920x1200 ist, mit AppDeskTop():CurrentSize() wird aber 1280x800 bei 150% ausgegeben
die "Berechnungen" laufen also auf einen "virtuellen" Desktop (Win7 ab 125%) wo man nur 96 DPI hat. die Applikation verändert sich ja so (150%) die Appkation wird durch DWM*** vergrössert was jedes XbParts samt Font betrifft.
*** https://msdn.microsoft.com/de-de/librar ... 85%29.aspx
wenn das nicht mehr passt ... man müsste die XbParts & Schrift verkleinern ...
aber dafür benötige ich den Faktor := nDPI / 96 welcher sich aus der "echten" Auflösung und dem "virtuellen" Desktop ergibt.
wenn eine Applikation, mit einen angepassten Manifest oder Checkbox, DPI-aware "fest" gemacht wurde dann wird DWM (?) abschaltet und man bekommst mit AppDeskTop():CurrentSize() 1920x1024 als Monitor Grösse und die Applikation läuft unter 150% mit 144 DPI welche virtuell dann 96 DPI sind also die "echten" Werte. ---
nun gibt es auch den Fall anders-rum wie du beschreibst :
Monitor wurde grösser aber User lässt 100% und möchte das die Xbase++ Applikation grösser wird bzw. Bildschirmauflösung wurde geändert.
die "Berechnung" eines X,Y "Faktor" ist genau das selbe wie ein oDlg:DrawingArea:Resize und überflüssig wenn man den Layoutmanager() verwendet mit
Code: Alles auswählen
o:layoutAlign := XBP_LEFTEDGE+XBP_TOPEDGE+XBP_RELWIDTH+XBP_RELHEIGHT+XBP_RELXPOS+XBP_RELYPOS
bei einem XbpBrowse() / XbpQuickBrowse() unterstützt der Layoutmanager leider noch nicht "column position and size" PDR 6682
nun bezieht sich Pos / Size nur auf die XbParts aber NICHT auf die Schrift !
! Note : Bitmap Fonts taugen NICHT zum skalieren also nur o:vector := .T.
es ist für Xbase++ Applikationen das selbe Font Problem wie es unter Windows Vista war wo DWM eingeführt wurde.
leider hat Alaska das Font Problem nicht in den Layoutmanager integriert ... also selber eine CLASS xyz FROM LayoutManager schreiben.