C++ DLL in VB 6.0

Du bist der Größte MAN!


Jetzt nur noch eine frage!

undzwar:

Wie kann ich ein ganzes array übergeben und in Visual basic wieder alle einträge ausgeben


Also zum beispiel: long WINAPI getData( long uebergabeparam[10]);

wie muss ich das in VB deklarieren


Danke

Du bist echt gut MAN! respekt!


Mfg

ibo
 
In C++ tust du es folgendermaßen definieren:
Code:
__declspec(dllexport) long __stdcall getData( long* uebergabeparam );
{
	uebergabeparam[0] = 123;
	uebergabeparam[1] = 456;
	uebergabeparam[2] = 789;
	.....
}
In VB schaut es dann so aus:
Code:
Private Declare Function getData Lib "C:\DLL.dll" (ByRef uebergabeparam As Long) As Long
Und zugreifen tust du dann in VB folgendermaßen:
Code:
Dim myArray(10) As Long

getData( myArray(0) )

MsgBox myArray(0) & " - " & myArray(1) & " - " & myArray(2)
ergibt dann eine MessageBox mit dem Text "123 - 456 - 789"


mfG,
MAN
 
MAN!

You'r the man

Super

Alles funktioniert!

Und sogar so wie ichs willl!

Danke für alles!

Du bist einfach der checker!


mfg ibo
 
Das ehrt mich :)

Fragen zu beantworten, von dene ich Ahnung habe macht mir auch sehr viel Spass, vor allem, wenns um Programmiertechnisches geht im Bereich VB, bzw C(C++).

Wenn du weiterhin noch wo anders Fragen haben solltest kannst du gerne wieder fragen! :)

so long,


mfG,
MAN
 
neues problem.... neue frage!

hi MAN,

also das is wahrscheinlich ne einfache frage für nen super Checker wie dich:

Ich will in VB ein Datei öffnen dialog machen!
gibts da auch so was wie in C++ das CFileDialog?

oder muss ich mir selber ein dialog basteln mit diesen ganzen ordnerboxen usw
 
Hi!

So etwas wie den CFileDialog in C++ gibt es durchaus in VB, hier heißt er nur anders, und zwar "CommonDialog".

Um diesen nutzen zu können must du aber erst eine Komponente den vorhandenen Steuerelementen hinzufügen, und zwar folgendes:

"Microsoft Common Dialog Control"

Wenn du dies dann hast, ziehst du es ganz einfach auf deine Form und per
Code:
CommonDialog1.ShowOpen()
bekommst du auch schon einen Öffnen-Dialog hin.

Falls du dazu noch Fragen haben solltest, wie man mit diesem Control umgeht, frag einfach nochmal nach :)


mfG,
MAN
 
hi MAN

Ich hab schon wieder ein Problem mit VB

Und zwar will ich ein Form das im Rahmen oben zwar diesen Minimieren Button hat aber nicht das Ausschalt button

Also die Frage ist jetzt, wie kann ich diesen Fenster Schließen Button deaktivieren
oder ganz entfernen, ohne das ich mein Minimieren Button entferne


Danke
 
Das X oben rechts wegzubekommen geht nur mit API-Aufrufen und zwar folgendermaßen:
Code:
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

Const MF_BYPOSITION = &H400
Const MF_REMOVE = &H1000

'Button um das Programm doch noch beenden zu können
Private Sub Command1_Click()
   End
End Sub

Private Sub Form_Load()
   Dim hMenu As Long
   Dim nPosition As Long
   
   hMenu = GetSystemMenu(Me.hwnd, 0)
   
   nPosition = GetMenuItemCount(hMenu)
   
   Call RemoveMenu(hMenu, nPosition - 1, MF_REMOVE Or MF_BYPOSITION)
   Call RemoveMenu(hMenu, nPosition - 2, MF_REMOVE Or MF_BYPOSITION)
   Call DrawMenuBar(Me.hwnd)
End Sub

mfG,
MAN
 
Zuletzt bearbeitet:
HI,

auf der Suche nach einer Lösung zu genau diesem Problem,(Übergabe Array DLL/VB) bin ich auf diesen Eintrag gestossen:

Original geschrieben von MAN
In C++ tust du es folgendermaßen definieren:
Code:
__declspec(dllexport) long __stdcall getData( long* uebergabeparam );
{
	uebergabeparam[0] = 123;
	uebergabeparam[1] = 456;
	uebergabeparam[2] = 789;
	.....
}

In VB schaut es dann so aus:
Code:
Private Declare Function getData Lib "C:\DLL.dll" (ByRef uebergabeparam As Long) As Long

Und zugreifen tust du dann in VB folgendermaßen:
Code:
Dim myArray(10) As Long

getData( myArray(0) )

MsgBox myArray(0) & " - " & myArray(1) & " - " & myArray(2)

ergibt dann eine MessageBox mit dem Text "123 - 456 - 789"


mfG,
MAN

Das habe ich genauso gemacht, nur ich bekomme immer den Fehler 9: "Index ausserhalb des gültigen Bereichs

Woran kann das liegen? Im Debugger von Access 2000 (im VB Editor) habe ich gesehen, dass die C++Dll das Array "kaputtschreibt, so das irgendeinmehrdimensionales(?) Array rauskommt.

Wär schön wenn da jemand was wüsste.

MfG

HT
 

Neue Beiträge

Zurück