Zitat:
Wer nun partout direkt mit der
WinApi hantieren muss, steht bei High-DPI mit GetSystemMetrics schnell auf verlorenem Posten.
Ist das eine Annahme(Wissen) oder nur eine Vermutung.. Ich denke das letztere.
Wenn man seine Anwendung DPI fähig machen will kommt man nun mal nicht Drumherum dann auch jedes erstellte Fenster bzw. Control dementsprechend zu behandeln was die Weite und Höhe angeht.
Wie du schon sagst die
VCL macht es automatisch wenn (dementsprechend angepasst).
Aber mir ist es egal ob ich DPI mit übergebe oder nur Clientweite, Clienthöhe.
Letztendlich sind das bei jedem wert nur 3 Buchstaben die ich vorhängen muss.
Und nein man steht mit GetSystemMetrics nicht auf verlorenen Posten warum auch?
Erkläre das bitte näher.
bsp: Aus meinem Player.. C++64
Man beachte das vorgehängte
dpi zum Beispiel beim erstellen des Rect.
Code:
DWORD dwStyle = WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
RECT rc;
SetRect(&rc, 0, 0, dpi(CLIENT_WIDTH), dpi(CLIENT_HEIGHT));
AdjustWindowRectEx(&rc, dwStyle, FALSE, 0);
long w = Width(rc); long x = (GetSystemMetrics(SM_CXSCREEN) - w) / 2;
long h = Height(rc); long y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2;
gP.hMainMenu = BuildMenu();
gP.hMain = CreateWindowEx(WS_EX_ACCEPTFILES, STR_CLASS, STR_TITLE, dwStyle, x, y, w, h, nullptr, gP.hMainMenu, hInstance, nullptr);
if (gP.hMain) {
if (InitKVPlayer(hInstance)) {
GetClientRect(gP.hMain, &rc);
y = Height(rc) - 80;
// Create movie slider
dwStyle = WS_VISIBLE | WS_CHILD | TBS_NOTICKS | TBS_FIXEDLENGTH;
CreateWindowEx(0, L"msctls_trackbar32", NULL, dwStyle, 0, y - 17, dpi(Width(rc)), dpi(18), gP.hMain, (HMENU)ID_SLIDER, hInstance, NULL);
Nun wo soll also hier nun ein Problem sein ?
Bin auch schon wieder weg da es hier um
VCL geht .. wollte nur deine Behauptung (verlorener posten) widerlegen.
gruss