最終更新日 :
VB Tips

C/C++の変数をVB型に書き換える
第一回目の今回は、まず、VBの変数の型についてまとめておきたいと思います。(これって、考えたらVBからAPIの宣言を書く時の型の書き換えにも使える...)

大まかに、Cの変数・定数宣言をVBの文法で書き換えてみます。
C/C++VB
int i; // 整数型 i の宣言Dim i As Long ' 32ビットシステムでは Long 型、16ビットシステム(Win3.1以前)では Integer 型
UINT i; // 符号無し整数型 i の宣言Dim i As Long ' 32ビットシステムでは Long 型、16ビットシステム(Win3.1以前)でも Long 型
char c; // 1バイト型 c の宣言Dim c As Byte ' VB4.0以降(ただし、負の値ではエラー)
Dim c As Integer ' VB2.0J
float f; // 単制度浮動小数点型 f の宣言Dim f As Single
double d; // 倍制度浮動小数点型 d の宣言Dim d As Double
Dim d As Currency ' 通貨型。値が整数値であれば使用可能
char *s[]; // 文字列 s の宣言Dim s As String
char *s[10]; // 固定長文字列 s の宣言Dim s As String * 10 ' ただし、VBではバイト単位ではなく文字単位
Dim s(9) As Byte ' バイト単位、s(0)〜s(9)で10バイト
HWND hwnd; // Windowsのハンドル類Dim hwnd As Long ' 全て Long 型
LPDWORD lpdw; // ポインタ型(DWORDはlongと同値)
LPVOID lpdw;
Dim lpdw As Long ' 全て Long 型(ポインタの内容は関係なし)
BOOL b; // Windowsのブール型Dim b As Boolean ' API宣言時は Long 型
#define a 0 // 定数宣言
const int a=0;
Const a = 0

簡単に言えば、sizeof()で得られたサイズと等しい長さを持つ型で宣言すればいいのです。また、構造体(VBではユーザー定義型と言います。)の内部の型も、上の表と同じように変えればいいのです。
ただし、VBでは構造体の中に自身の構造体を含めることはできません。どうしてもしたい場合は、Long型(ポインタ)で宣言し、メモリをロックしてそのアドレスを代入しておく方法を取ります。ポインタの中身を構造体に代入する時は、WindowsAPIのRtlMoveMemory()を使用します。また、変数のアドレスの取得は、VarPtr()関数(VBの組み込み関数)を使用します。

Copyright (C) 1999 Satoshi Tadaフィードバックはこちら
Home