> 初めまして。naoと申します。 > どうぞ、宜しくお願いします。m(_ _)m どうも。こちらこそ。
> 1.メンバーはすべて文字列を扱う > 2.ユーザー定義型の配列を使いたい > (DLLの作り直しを避けるため) > > さらにこのような条件があるので、それを加味して > ヘルプを読みましたが、配列の場合・ユーザー定義型の場合・ > 文字列の場合......とすべてのケースを試してみたのですが、 > うまくいきませんでした。 > > どなたかご存知の方、いらっしゃいましたら、 > ご返答、宜しくお願いします。
1はこんなんでいけそうですが ---- VC ----- typedef struct { LPSTR f1; LPSTR f2; } UT_TYPE;
extern __declspec(dllexport) LONG TestFunc(CONST UT_TYPE* m) { MessageBox(NULL, m->f1, m->f2, MB_OK); return 0; }
---- VB ----- Private Type UT f1 As String f2 As String End Type
Private Declare Function TestFunc Lib "UDT4VB.dll" (m As UT) As Long
Private Sub Command1_Click() Dim a As UT a.f1 = "Sample" a.f2 = "Hello!!" Call MsgBox(TestFunc(a), vbOKOnly, "This is VB MsgBox") End Sub
2はちょっとわかりません。m(_ _)m
ほかの方法としてはグローバルなメモリハンドルを使って キャストするとかもできそうですね。
|