AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi VCL Ersatz für GetSystemMetrics(SM_CYSIZE) bitte
Thema durchsuchen
Ansicht
Themen-Optionen

VCL Ersatz für GetSystemMetrics(SM_CYSIZE) bitte

Ein Thema von KodeZwerg · begonnen am 7. Apr 2018 · letzter Beitrag vom 7. Apr 2018
 
EWeiss
(Gast)

n/a Beiträge
 
#16

AW: VCL Ersatz für GetSystemMetrics(SM_CYSIZE) bitte

  Alt 7. Apr 2018, 16:15
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

Geändert von EWeiss ( 7. Apr 2018 um 22:11 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz