Problem mit $tagNMCUSTOMTEXT

  • Ich versuche mich gerade an der farbigen Darstellung bei dem Syslink-Control.

    Dazu muss man das WC_LINK-Window mit $LWS_USECUSTOMTEXT aufrufen. Soweit funktioniert das auch. Es wird auch in der Window-Proc unter $WM_NOTIFY das $NM_CUSTOMTEXT aufgerufen.

    Aber irgendwie wird die Struktur falsch zurückgegeben.

    Laut MSDN soll die Struktur so aussehen:

    Code
    typedef struct tagNMCUSTOMTEXT {
      NMHDR   hdr;
      HDC     hDC;
      LPCWSTR lpString;
      int     nCount;
      LPRECT  lpRect;
      UINT    uFormat;
      BOOL    fLink;
    } NMCUSTOMTEXT, *LPNMCUSTOMTEXT;

    Ich habe daraus dieses hier für AutoIt gemacht:

    AutoIt
    Global Const $tagNMCUSTOMTEXT = 'struct;' & $tagNMHDR & ';handle hDC;ptr lpString;int nCount;' & $tagRECT & ';uint uFormat;bool fLink;endstruct'

    Das funktioniert auch, bis auf die letzten beiden Werte. Bei "uFormat" kommt immer "0" oder "1" raus, was eigentlich bei "fLink" stehen sollte und "fLink" bekommt Zufallswerte (bei jedem Start etwas anderes, was wohl darauf hindeutet, dass über die Struktur hinaus gelesen wird). Habe ich bei der Struktur-Definition einen Fehler gemacht? Oder woran kann das liegen?

    Hier mal mein Script (edit: korrigiertes Script)

  • Ach shit!

    Jetzt, wo ich das hier aufgeschrieben habe, sehe ich den Fehler: lpRect muss ein Pointer sein und nicht $tagRECT.

    Es muss also so aussehen:

    AutoIt
    Global Const $tagNMCUSTOMTEXT = 'struct;' & $tagNMHDR & ';handle hDC;ptr lpString;int nCount;ptr lpRect;uint uFormat;bool fLink;endstruct'

    Manchmal sieht man den Wald vor lauter Bäumen nicht.