掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBでOCXから値を取得するには? (ID:120509)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
# もしかして、users.gr.jpの[VB:14284]の投稿の人でしょうか? まだ、やりたい事が見えてこないので、参考になるかわかりませんが。 VB6にて、 '-------------------------- UDTSample.ctl Option Explicit Public Type COMUDT Member1 As Long Member2 As String Member3 As Integer member4 As Boolean End Type '☆イベントの引数にユーザー定義型を指定した場合 Public Event Click(ByRef Param As COMUDT) Private Sub UserControl_Click() Dim X As COMUDT X.Member1 = ObjPtr(Me) X.Member2 = Ambient.DisplayName X.Member3 = 0 X.member4 = True RaiseEvent Click(X) End Sub '-------------------------- のような定義の ActiveXコントロールを作成し、そのocxを OLEVIEW.EXE で解析してみると、下記のようなIDLが生成されますね。 "struct"にて、構造体が定義されている事がわかります。 [uuid(……),……] library UDTSample { importlib("stdole2.tlb"); interface _UDTControl; dispinterface __UDTControl; [uuid(……),……] interface _UDTControl : IDispatch {}; [uuid(……),……,control] coclass UDTControl { [default] interface _UDTControl; [default, source] dispinterface __UDTControl; }; [uuid(……),……] dispinterface __UDTControl { properties: methods: [id(0x00000001)] void Click([in, out] COMUDT* Param); }; [uuid(……),……] typedef [uuid(……),……] struct tagCOMUDT { long Member1; BSTR Member2; short Member3; VARIANT_BOOL member4; } COMUDT; }; で。上記OCXをVBで利用した場合は、 Private Sub UDTControl1_Click(Param As UDTSample.COMUDT) End Sub のように、イベントの引数としてユーザー定義が受け渡せていますね。 という事で。技術的にはOCXで構造体を使う事は可能ですし、 それを利用する事も(VB6であれば)可能なはずです。 ただし、VC側云々という部分になってくると、この掲示板の範疇を 超えてしまいますので、その件については回答を控えさせていただきます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.