Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#12

AW: Formulargröße auf HighDPI-Monitor speichern

  Alt 6. Apr 2019, 17:32
Ich gebe mal ein kleines Beispiel wie ich das in meinem KVPlayer mache (c++) keine Ahnung ob du das dann so auf VCL umsetzen kannst.

Code:
SetRect(&rc, 0, 0, dpi(CLIENT_WIDTH), dpi(CLIENT_HEIGHT));
AdjustWindowRectEx(&rc, dwStyle, FALSE, 0);
CLIENT_WIDTH und CLIENT_HEIGHT ist die normale größe ohne DPI.
Code:
#define CLIENT_WIDTH 960
#define CLIENT_HEIGHT 658
Ich rechne DPI hoch wie folgt.

Code:
long dpi(IN long nPix) {
    static float ratio;
    if (ratio == 0) {
        HDC hDC = GetDC(0); ratio = (GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f); ReleaseDC(0, hDC);
    }
    return (long)(nPix * ratio);
}
Du musst nun lediglich die DPI in umgekehrter Reihenfolge zurück rechnen das wars schon.
Ich denke damit kommst du zurecht.

gruss

Geändert von EWeiss ( 6. Apr 2019 um 17:35 Uhr)
  Mit Zitat antworten Zitat