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