Thx erstmal fürs Antworten.
Die TBBUTTONINFO64-Struktur habe ich aus der CommCtrl-
Unit, von der dortigen TBBUTTONINFO-Struktur hergeleitet. Und dort steht auch: "lParam: DWORD;"
Das mit dem {$ALIGN 8} hat leider nicht geklappt. Ich glaube auch nicht so richtig dran, dass der Record unpacked sein kann, wenn der beim 32bit-Win schon packed gewesen ist. Es sei denn, beim 64bit-Win wären diese Strukturen jetzt alle unpacked?
Wenn ich übrigens mit SizeOf() die Summe der Längen aller Felder in der Struktur VOR dem pszText-Zeiger ermittle, dann komme ich gemäß:
type
TBBUTTONINFO64 = packed record
cbSize: UINT; = 4Bytes
dwMask: DWORD; = 4Bytes
idCommand: Integer; = 4Bytes
iImage: Integer; = 4Bytes
fsState: Byte; = 1Bytes
fsStyle: Byte; = 1Bytes
cx: Word; = 2Bytes
lParam: DWORD; = 4Bytes
// pszText: PAnsiChar;
_align: longint; // Zeiger müssen in 64-Bit-Windows an 8-Byte-Alignment beginnen
pszText: Int64; // Zeiger haben in 64-Bit-Windows 8 Byte
cchText: Integer;
auf eine gesamte Datenlänge vor dem Ptr von genau 24 Bytes. Also habe ich in einem weiteren Versuch auch mal dieses künstliche "_align: longint" ganz weggelassen. Allerdings auch leider ohne Erfolg.
?