Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#9

AW: Non-Vcl -> Bmp SS_NOTIFY dilemma

  Alt 20. Aug 2020, 16:24
Zitat:
Bmp SS_NOTIFY dilemma
Nachdem ich meine Nase nochmal tiefer in die WinApi Referenz gesteckt habe bin ich auf eine bessere Lösung gekommen.
SetClassLongPtr(Cardinal(hWndArr[1]), Integer(GCL_HCURSOR), Integer(LoadCursor(hWndArr[0], IDC_HAND)));
sorry muss da leider noch mal leicht eingreifen.
32 und 64 Bit der zustand ist das SetClassLongPtr je nach verwendeten kompilat zwei werte annehmen kann 4Bit\32Bit 8Bit\64Bit
deshalb ja der umstand das man nicht mehr SetClassLong oder vergleichbares verwenden soll.

SetClassLongPtr(Cardinal(hWndArr[1]), Integer(GCL_HCURSOR), Integer(LoadCursor(hWndArr[0], IDC_HAND)));
zu
SetClassLongPtr(Cardinal(hWndArr[1]), Integer(GCL_HCURSOR), LONG_PTR(LoadCursor(hWndArr[0], IDC_HAND)));
oder
SetClassLongPtr(Cardinal(hWndArr[1]), WParam(GCL_HCURSOR), LParam(LoadCursor(hWndArr[0], IDC_HAND)));

Dann bist du auf den richtigen weg.
Nicht nur die richtige Funktion sondern auch den entsprechenden Daten Typ dazu verwenden sonst macht es keinen sinn.
WParam, LParam sollte die richtige Bit Größe zuweisen je nach dem welche art von Class man verwendet WNDCLASSEX \ WNDCLASS

Siehe dazu nochmal!

Code:
ULONG_PTR SetClassLongPtrA(
  HWND    hWnd,
  int     nIndex,
  LONG_PTR dwNewLong
);
LONG_PTR

Nebenbei kannst du in deiner Class einen Speicher reservieren der für deine Propertys zuständig ist.
Siehe dazu "cbWndExtra"

Geändert von venice2 (20. Aug 2020 um 18:08 Uhr)
  Mit Zitat antworten Zitat