C++ から Visual Basic への変換
開発者は、C++ プログラミング言語を使用して、特定の変数を格納するメモリに直接アクセスできます。 メモリ ポインターは、この直接アクセスを提供します。 Visual Basic では、ポインターが自動的に処理されます。 たとえば、C++ で int へのポインターとして宣言されたパラメーターは、Visual Basic で ByRef整数として宣言されたパラメーターと同じです。
Visual Basic で 文字列として 宣言されているパラメーターは、C++ の BSTR へのポインターとして宣言されます。 C++ で文字列ポインターを NULL に設定することは、Visual Basic で文字列を vbNullString 定数に設定することと同じです。 NULL を受け取るために設計された関数に長さ 0 の文字列 ("") を渡しても機能しません。これは、0 ポインターではなく長さ 0 の文字列へのポインターを渡すからです。
C++ では、Visual Basic の初期バージョンでは同等のデータ コンテナー、つまり構造体と共用体がサポートされています。 このため、COM オブジェクトは通常、オブジェクト クラスの構造体と共用体に格納される情報をラップします。 ただし、一部の COM オブジェクトには構造体が含まれている可能性があるため、オブジェクトのメソッドまたは機能の一部に Visual Basic にアクセスできなくなります。
一部の C++ データ型は、署名されていない型や HWND 型など、Visual Basic ではサポートされていません。 これらのデータ型を受け入れるか返すメソッドは、Visual Basic では使用できません。
Visual Basic では、オートメーションと互換性のあるデータ型が内部データ型として使用されます。 したがって、オートメーションと互換性のある C++ データ型も Visual Basic と互換性があります。 オートメーションと互換性のないデータ型は、Visual Basic に変換できない場合があります。
次の表に、Visual Basic でサポートされているデータ型とその VARTYPE に相当するデータ型を示します。 VARTYPE は、Automation バリアント型を一覧表示する列挙型です。
Visual Basic のデータ型 | VARTYPEと同等のもの |
---|---|
整数 |
16 ビット、符号付き、VT_I2 |
Long |
32 ビット、符号付き、VT_I4 |
日付 |
VT_DATE |
通貨 |
VT_CY |
Object |
*VT_DISPATCH |
String |
VT_BSTR |
Boolean |
VT_BOOL |
通貨 |
VT_DECIMAL |
Single |
VT_R4 |
Double |
VT_R8 |
Decimal |
VT_DECIMAL |
Byte |
VT_DECIMAL |
Variant |
VT_VARIANT |
キーワード (keyword) ByValでラベル付けされていない限り、Visual Basic のすべてのパラメーターは、値ではなく参照 (ポインター) によって渡されます。
C++ と Visual Basic では、プロパティの表現方法が若干異なります。 C++ では、プロパティはアクセサー関数のセットとして表されます。1 つはプロパティ値を設定し、1 つはプロパティ値を取得します。 Visual Basic では、プロパティは、プロパティ値を取得または設定するために使用できる 1 つの項目として表されます。