Yeaaaaaaah, es geht!!!!!!!!!
Echt, suuuper Teamwork von dir. Aller besten Dank nochmal!
Die ersten zwei Versuche wollte es ja auch damit nicht so richtig klappen. Als ich dann aber in einem "letzten" Versuch auch noch den endständigen letzten 4Byte-dummy (von dem ich dachte, er sei eigentlich unwichtig) drangehängt hatte, kamen die ersehnten Button-Captions zum Vorschein.
Der fragliche und in einem 64bit-Win funktionsfähige Record sieht jetzt also folgendermaßen aus:
Delphi-Quellcode:
type
TBBUTTONINFO64 = packed record
// TBBUTTONINFO64 = record // packed kann ich hier rausschmeißen, weil dann das default "{$A8}" zum Zuge kommt und das heißt: 8Byte lange Ptr werden an 8Byte-Grenzen ausgerichtet --> also genau das, was ein 64bit-Win benötigt
cbSize: UINT;
dwMask: DWORD;
idCommand: Integer;
iImage: Integer;
fsState: Byte;
fsStyle: Byte;
cx: Word;
_align1 : DWord;
// lParam: DWORD;
lParam: Int64;
// pszText: PAnsiChar;
pszText: Int64; // Zeiger haben in 64-Bit-Windows 8 Byte
cchText: Integer;
_align2 : DWord;
end;
edit:
...bzw. so natürlich, jetzt mit dem defaultmäßig angeschaltetem {$ALIGN 8} und damit ohne das "packed" (ich hatte es ja sogar in der Kommentierung der davor per "//" ausgeschalteten 2'ten TBBUTTONINFO64-Zeile auch schon erwähnt):
Delphi-Quellcode:
TBBUTTONINFO64 = record // packed kann ich hier rausschmeißen, weil dann das default "{$A8}" zum Zuge kommt und das heißt: 8Byte lange Ptr werden an 8Byte-Grenzen ausgerichtet --> also genau das, was ein 64bit-Win benötigt
cbSize: UINT;
dwMask: DWORD;
idCommand: Integer;
iImage: Integer;
fsState: Byte;
fsStyle: Byte;
cx: Word;
// lParam: DWORD;
lParam: Int64;
// pszText: PAnsiChar;
pszText: Int64; // Zeiger haben in 64-Bit-Windows 8 Byte
cchText: Integer;
end;