![]() |
GetWindowLongPtr Result NIL
Subclassing erstellen mit 32BIT Anwendung kein Problem diese Funktion liefert immer einen gültigen Pointer.
Delphi-Quellcode:
Das Handle ist gültig.
function DialogNotifyProc(WinHandle: HWND; Msg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall;
//... DlgHandle := GetParent(WinHandle); //... FPrevDlgProc := Pointer(GetWindowLongPtr(DlgHandle, DWL_DLGPROC)); SetWindowLongPtr(DlgHandle, DWL_DLGPROC, LONG_PTR(@DlgProc)); Aber nicht mit 64Bit. Pointer ist NIL das verstehe wer will. :evil: ZITAT: Zitat:
|
AW: GetWindowLongPtr Result NIL
Beachte die Parameter der Funktion
![]() Und nutze GetLastError, wenn was nicht passt, um herauszufinden, woran es klemmt! Noch kann ich zählen, wie oft ich diese Empfehlung bereits gegeben habe. PS: Sorry, falls die Empfehlung dich nerven sollte, aber du bist lange genug dabei, dass du es eigentlich bereits wissen solltest. Grüße Dalai |
AW: GetWindowLongPtr Result NIL
Zitat:
Dort kenne ich nur DWL_DLGPROC Zitat:
Aber auch ein GetLastError hätte mir nicht weitergeholfen woher sollte ich wissen das es eine andere Konstante gibt? Danke! PS: Habe es gefunden aber nicht in den Delphi Headern..
Delphi-Quellcode:
DWLP_DLGPROC = Sizeof(LRESULT);
Verstehe ich nicht aber gut ist wie es ist. Funktioniert mit 32Bit und 64 Winapi.Windows.. 32 Bit
Delphi-Quellcode:
Das wars.
{ GetSetWindowWordLong offsets for use with WC_DIALOG windows }
{$EXTERNALSYM DWL_MSGRESULT} DWL_MSGRESULT = 0; {$EXTERNALSYM DWL_DLGPROC} DWL_DLGPROC = 4; {$EXTERNALSYM DWL_USER} DWL_USER = 8; Und für 64BIt
Delphi-Quellcode:
gruss
//64-Bit longpointer constants
const {$EXTERNALSYM GWLP_WNDPROC} GWLP_WNDPROC = -4; {$EXTERNALSYM GWLP_HINSTANCE} GWLP_HINSTANCE = -6; {$EXTERNALSYM GWLP_HWNDPARENT} GWLP_HWNDPARENT = -8; {$EXTERNALSYM GWLP_USERDATA} GWLP_USERDATA = -21; {$EXTERNALSYM GWLP_ID} GWLP_ID = -12; |
AW: GetWindowLongPtr Result NIL
Seltsam,
![]() ![]() ![]() |
AW: GetWindowLongPtr Result NIL
Zitat:
Sagt mir GetLastError das ich die falsche Konstante (für 64Bit) verwende (32Bit geht ja) und welche ich nutzen muss? Denke mal nicht. (Aber vielleicht liest diese es mir auch noch vor, man weis ja nie und man darf ja träumen) Es spuckt vielleicht einen Invaliden Parameter als Fehlermeldung aus aber das war es dann auch schon. Damit weis ich aber immer noch nicht welche Konstante ich verwenden muss zumal sie in den Headern von Delphi gar nicht existiert. Also woher nehmen und nicht stehlen. Sorry ne Glaskugel habe ich nicht. Aber das Thema ist ja dank @Dalai Informationen erledigt. gruss |
AW: GetWindowLongPtr Result NIL
Zitat:
GetLastError kann schon Hinweise geben, z.B. auf einen ungültigen Parameter oder ähnliches. Zitat:
Grüße Dalai |
AW: GetWindowLongPtr Result NIL
Zitat:
Aber wie gesagt ich stand erst mal auf dem Schlauch. Das erste was man tut ist in den Headern zu schauen und das ist nun mal Winapi.Windows aber da war nichts. Auf der anderen Seite.. GetWindowLongPtr gibt es nicht erst seit gestern ist also schon verwunderlich das solche trivialen Dinge nicht im Header stehen. Sorry habe im Moment so viele Baustellen um meine LIB auf 64Bit umzustellen das ich nicht daran gedacht habe mal die API selbst zu durchleuchten. (DuckDuck und go..) Also Danke nochmals. Zitat:
PS: Habe jetzt 8 Anwendungen schon nach 64Bit umgelegt bis auf eine die 25% CPU Auslastung mit 64Bit produziert laufen sie alle. Kommt immer wieder etwas dazu das ich fixen muss aber gut was soll's. Also nächstes kommt KVPlayer an der reihe. ;) gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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