Benutzerdefinierten Datemtyp übergeben



  • Hallo Forum!

    Ich habe folgendes Problem:

    Ich habe mir mittels C++ eine dll geschrieben.
    Ich möchte nun einen Benutzerdefinierten Datentypen aus einem VB Programm an diese dll übergeben.

    Wie muss ich im Funktionsaufruf in meinem C-Programm Deklarieren?
    Und wie ist der API aufruf dann?

    So habe ich es versucht:

    VARIANT_BOOL _stdcall Funktionsname(RECT r, LPCSTR path)
    

    Im VB is RECT ein Benutzerdefinierter Datentyp. Den kann ich nur ByRef übergeben.
    Also folgendes Probiert:

    VARIANT_BOOL _stdcall Funktionsname(RECT *r, LPCSTR path)
    

    Leider meckert er dann.

    error C2228: Der linke Teil von '.bottom' muss eine Klasse/Struktur/Union sein
    error C2228: Der linke Teil von '.left' muss eine Klasse/Struktur/Union sein
    error C2228: Der linke Teil von '.right' muss eine Klasse/Struktur/Union sein
    error C2228: Der linke Teil von '.top' muss eine Klasse/Struktur/Union sein

    Wäre für ein wenig Hilfestellung sehr dankbar!

    Greetz
    Joey



  • Ok. Meine Glaskugel ist zwar leider immer noch kaputt, aber ich vermute mal du hast so was in der Art versucht:

    VARIANT_BOOL _stdcall Funktionsname(RECT *r, LPCSTR path)
    {
      if(r.bottom == 0)
        return 0;
      else
        return 1;
    }
    

    r ist ein Zeiger, RECT*. Und wenn du über einen Zeiger auf die Elemente zugreifen willst, musst du den -> und nicht den . benutzen:
    r->bottom, r->top, etc. 🙂



  • jepp...

    genau das war der fehler. 😉

    Hatte es grade selber gefunden.

    Leider mag VB das trotzdem noch nich. 😕

    Trotzdem danke...

    Ich kommr wohl nicht drumherum, sämtliche Inhalte des Structs bzw in VB des benutzerdefinierten Datentypes einzeln zu übergeben. 😡

    Greetz
    Joey


Anmelden zum Antworten