AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi 11 -GetSystemMetrics( SM_CXSIZEFRAME ) ermittelt andere Werte
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 11 -GetSystemMetrics( SM_CXSIZEFRAME ) ermittelt andere Werte

Ein Thema von Michael II · begonnen am 24. Okt 2021 · letzter Beitrag vom 27. Okt 2021
 
venice2
(Gast)

n/a Beiträge
 
#8

AW: Delphi 11 -GetSystemMetrics( SM_CXSIZEFRAME ) ermittelt andere Werte

  Alt 25. Okt 2021, 07:45
Zitat:
Wer noch Code mit GetSystemMetrics(SM_CXSIZEFRAME) aus der Winapi.Windows nutzt, muss nach dem Umstieg auf Delphi 11 die Fenster eventuell auch anders/neu positionieren.
Dann ist es ein Fehler von Delphi 11.
Ein Betriebssystem bzw. die API der jeweiligen Funktion von diesen) gibt die Breite des Borders vor und wenn ein Programm in dem fall Delphi von der Norm abweicht ist es schlichtweg Falsch.

Wenn ich mein Fenster (nonVcl) mit Delphi kompiliere dann hat mir Delphi die Werte zur Verfügung zu stellen die dem Betriebssystem entsprechen.
Und zwar diese aus der WinApi nix anderes.

Wo kommen wir da hin wenn jede Programmiersprache sein eigenes Süppchen kocht.

Delphi-Quellcode:
        if IsWindowVisible(GetDlgItem(WinHandle, ID_MAXIMIZE)) then
        begin
          GetClientRect(WinHandle, rc);

          xF := rc.Right;
          yF := rc.Bottom;
          xSide := 0;
          BORDER := GetSystemMetrics(SM_CXFRAME); // SM_CXSIZEFRAME ist das gleiche
          if ((P.X >= xF - BORDER) and ((P.Y >= yF - BORDER))) then
          begin
            HITTEST := HTBOTTOMRIGHT;
          end
Ich muß mich darauf verlassen das die Koordinaten bzw. Border mir die richtigen Werte aus der WinApi zurück gibt.
Die dürfen vom Delphi Compiler nicht verändert werden.

Sollte es jedoch nur die Fenster in der IDE von Delphi betreffen kann es mir egal sein was die da rummurksen.

EDIT:
Es sollte nicht die Aufgabe einer Programmiersprache sein eine Anwendung High DPI fähig zu machen.
Das unterliegt dem Programmierer und zwar mit Altbewährten Methoden unter Verwendung der vom System bereitgestellten API.

Geändert von venice2 (25. Okt 2021 um 08:35 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 22:29 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