Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unterschied zwischen HWND und THandle? (https://www.delphipraxis.net/90890-unterschied-zwischen-hwnd-und-thandle.html)

Mazel 25. Apr 2007 15:28


Unterschied zwischen HWND und THandle?
 
Hallo,

ich würde gerne wissen, worin der Unterschied zwsichen HWND und THandle besteht. Bei einigen Funktionen aus Delphi wird das eine, bei einer anderen der andere Typ verlangt, aber auch bei manchen selbst erstellten Funktionen ist es oft unterschiedlich. Eigentlich sind beides lediglich nur Cardinalwerte, denke ich, weshalb wurden dann diese beiden Typen eingeführt?

Gruß
Mazel

sirius 25. Apr 2007 15:32

Re: Unterschied zwischen HWND und THandle?
 
Meine simpe Erklärung:
Es könnte doch mal sein, dass in einer zukünftigen Windows Generation ein Handle für ein Window (Hwnd) nicht mehr 32bit breit ist, sondern 64 oder 80 oder xxx. Dann gibt es in einem Update oder in der nächsten
Delphiversion einen Typ Hwnd, der je nach Windowsversion 32bit oder 64bit breit ist. Und du kannst deine alten Programme auf diese Version einfach portieren und brauchst nix zu ändern (auch wenn cardinal und THandle immernoch 32bit sind)

SirThornberry 25. Apr 2007 15:33

Re: Unterschied zwischen HWND und THandle?
 
Es gibt mehrere Handle Typen zur Übersichtlichkeit.
Beispiel: HDC = Handle auf Device Context
natürlich kann man auch ein THandle nehmen. Aber durch die Verwendung des Types HDC (oder eines andeen speziellen Types) sieht jeder sofort um was für ein Handle es geht. Hwnd ist zum Beispiel ein Handle auf ein Fenster (Buttons etc. sind ja auch Fenster). Wenn ich also sehe das der Typ ein HDC ist komme ich nicht in Versuchung das Handle einer Funktion für HWNDs zu übergeben.

Robert Marquardt 25. Apr 2007 15:44

Re: Unterschied zwischen HWND und THandle?
 
Eigentlich wollte MS damit Typsicherheit einfuehren, aber hat es leider wieder torpediert. Hauptsaechlich durch die Funktion CloseHandle mit der man fast alle Handles freigibt.

Mazel 25. Apr 2007 15:45

Re: Unterschied zwischen HWND und THandle?
 
Wenn ich statt dem HWND für ein Fensterhandle THandle oder gar HDC verwende, ändert sich aber am Wert nichts, bzw. wird der gleiche Wert übertragen? Es geht hier also lediglich darum, eine Übersichtlichkeit einzuhalten und um schneller mit eine Funktion/Prozedur zu arbeiten.

SirThornberry 25. Apr 2007 15:52

Re: Unterschied zwischen HWND und THandle?
 
Genau, wie du bereits festgestellt hast sind letzendlich alles Cardinals bzw. 32bit Werte. Du kannst also ebenso einen Integer (oder sogar Arrray[0..3] of Byte) verwenden (wenn dir der Delphicompiler nicht dazwischenfunkt :wink: aber auch das lässt sich mit Casts dann korrigieren und tritt eigentlich auch nur bei var-, const- und out-parametern auf)

Mazel 25. Apr 2007 15:54

Re: Unterschied zwischen HWND und THandle?
 
Ok,

danke für die Informationen. :thumb:

Gruß
Mazel


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz