tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: 異なる構造体の関数渡し
投稿日: 2010/03/16(Tue) 17:59
投稿者魔界の仮面弁士
ByRef iSmp As Variant を、
ByRef iSmp As ENE_SHM_REF_POWER に
変更したメソッドを用意するだけでは都合が悪いのでしょうか?

どうしても Variant 引数にしたいのであれば、先述のパターン(b)にするために、
そのユーザー定義型を ActiveX DLL のプロジェクトなどとして登録する必要があるかと。


> クラスにする方法が分かりません。
であれば、止めておいたほうが良いかと思います。


> 異なる構造体3種は共有メモリです。
ENE_SHM_PWR_INFO と ENE_SHM_REF_POWER の 2 種ではありませんでしたっけ?


> 其のポインタとサイズでMoveMemory()したいのです。
> 単に、Cの void * として取り扱いたいだけなのですが…。
API との受け渡しであれば、ByRef As Any 引数にすれば、任意のユーザー定義型を
ポインタとして渡せますが……VB 側のプロシージャではそうはいきません。

それぞれのユーザー定義型のサイズに互換性があれば、LSet で
一方の型に変換するという手もありますけれどね。


あるいは、それぞれのユーザー定義型を「Byte 配列に変換する関数」や
「Byte 配列を受け取り、それをユーザー定義型として返す関数」を
用意するというのは如何でしょう。
呼び出しの手間は増えますが、Byte 配列で交換するのであれば
RtlMoveMemory / MoveMemory への影響は無いと思います。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。