DLL einbinden VB6

OP #5081032
Hallo Zusammen,

ich bin noch ziemlicher Anfänger mit VB6 und gerade dabei eine externe 
Dll einzubinden über Delcare Function....

Jetzt habe ich folgendes Problem wie kann ich folgenden Structur in VB6 
abbilden (Beispiel stammt aus VB.net2005)?
1
 Public Structure LND_NOTIFICATION
2
        Dim type As UShort
3

4
        ''            union
5
        ''          {
6
        ''            struct
7
        ''          {
8
        ''            PDLN_CALLBACK function;
9
        ''            void *context;
10
        ''          } callback;
11
        ''#ifdef WIN32
12
        ''        HANDLE event;
13
        ''       struct
14
        ''        {
15
        ''            HWND handle;
16
        ''            UINT message;
17
        ''        } windowMessage;
18
        ''        struct
19
        ''        {
20
        ''           DWORD thread;
21
        ''            UINT message;
22
        ''        } threadMessage;
23
        ''#endif // WIN32
24
        ''          uint8_t reserved[64];
25
        ''    };
26

27
    End Structure
Gast
Robert C. schrieb:
> Geh mal auf "www.pinvoke.net" und such nach dem Namen deine API.
> Da sind dann die Konvertierungen gelistet.

Ja, für .NET, der TO will aber VB6.

@Matze
> Beispiel stammt aus VB.net2005

Na ja, das ist wohl eher auskommentierter C-Code mit 3 Zeilen VB.

Struktur in VB6 (zumindest ein einfaches Beispiel):
https://msdn.microsoft.com/de-de/library/030kb3e9(v=vs.90).aspx

Vielleicht auch nützlich (ähnliche Frage):
http://www.vbforums.com/showthread.php?505818-RESOLVED-C-Structures-Unions-and-Pointers-in-VB6
Es geht wohl um die struct aus dem header:
https://github.com/PISCES-HI/rover-onboard/blob/master/thirdparty/include/dln/dln_generic.h

da ist das Problem, dass du in der Struktur 64 Byte freihalten musst, 
gleichzeitig aber die ersten 8 dieser 64 Byte als struktur 
interpretieren. Würde das so machen:
1
Private Type DLN_container
2
    _type As Integer
3
    data(64) As Byte
4
End Type
5

6
Private Type DLN_message
7
    handle As Long
8
    message As Long
9
End Type

Dann der Funktion einen DLN_container übergeben, damit auf jeden Fall 
genug Speicher allokiert ist. Anschließend
1
Dim msg As DLN_message
2
LSet msg = container.data

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.