Zugriff auf Pointer-Parameter einer Message

  • Hallo, war lange nicht hier.

    Ich habe leider wohl viel vergessen und komme bei der Anwendung einer MSG nicht weiter bzw. ich bekomme nicht das gewünschte Ergebnis.


    @message void MSG_GH_GET_CURRENT_TOOL(CurrentToolValues *retVal = bpaxdxcx); (aus GROBJ.goh)

    CurrentToolValues ist wie folgt definiert:

    typedef struct ( word CTV_grObjSpecificData, word CTV_unused, ClassStruct *CTV_toolClass) CurrenToolValues;


    Ich rufe die MSG wie fogt auf:

    CurrentToolValues *aktuellesTool;

    @call D3Head::MSG_GH_GET_CURRENT_TOOL(&aktuellesTool);

    if ((aktuellesTool->CTV_toolClass == (ClassStruct *) &PointerClass)) MessageBox("Hallo");


    Der Compiler akzeptiert klaglos, aber es erfolgt keine Meldung, obwohl PointerClass gesetzt ist. Vermutlich ist der Zugriff "aktuellesTool->CTV_toolClass" nicht in Ordnung. Weiß jemand Rat?

    Wilfried

  • Hallo!


    Entweder

    CurrentToolValues *aktuellesTool =null;

    //ggf. fehlt hier noch ein malloc für den Zeiger, wenn das nicht in der Message gemacht wird

    @call D3Head::MSG_GH_GET_CURRENT_TOOL(aktuellesTool);

    //hier fehlt ggf. noch ein aktuellesTool!=null ;)

    if ((aktuellesTool->CTV_toolClass == (ClassStruct *) &PointerClass)) MessageBox("Hallo");


    Oder

    CurrentToolValues aktuellesTool;

    @call D3Head::MSG_GH_GET_CURRENT_TOOL(&aktuellesTool);

    if ((aktuellesTool.CTV_toolClass == (ClassStruct *) &PointerClass)) MessageBox("Hallo");



    (Ggf. müsstest du in beiden Varianten noch das & vor PointerClass entfernen, je nachdem, wie das PointerClass definiert und gesetzt ist.)


    Ich hoffe, dass ich nichts übersehen habe. Sitze gerade im Zug (Dienstreise) und habe nur mein Uralt-Handy da…

    Viel Erfolg!

    Jörg

    There are two rules in life:
    1. Never give out all of the information.