Einzelnen Beitrag anzeigen

r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Toolbar-Auslesen klappt nicht auf einem 64bit-Win7?

  Alt 24. Okt 2012, 01:30
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;

Geändert von r29d43 (24. Okt 2012 um 07:50 Uhr)
  Mit Zitat antworten Zitat