Sheet1

---?先看VC++定?的一个比?????:
typedef struct tagTBSAVEPARAMSA{
HKEY hkr;
LPCSTR pszSubKey;
LPCSTR pszValueName;
}TBSAVEPARAMSA,FAR* LPTBSAVEPARAMSA;
 
---- 首先我?需要把第一行的"typedef struct"??成"Public Type"
 
Public Type tagTBSAVEPARAMSA
 
---- 然后????,
 
HKEY hkr;
LPCSTR pszSubKey;
LPCSTR pszValueName;
 
---- ?于第一个成??型HKEY.我?要知道VC++中的以"H"??的大部分数据?型代表的是某?句柄.在VB中?一个Form?象和?多控件都有一个hWnd属性,它代表所属窗口的句柄.hWnd的?型是Long,并且所有用来存?句柄的??型都是Long.因此,??在VB中定??:
 
hkr As Long
 
----?的,VC++数据?型LPSTR和LPCSTR代表指向字符串的指?,在VB中可以当作String?型.因??????API?,VB将把??中所有的String??成指向ANSI字符串的指?.因此后?个成?在VB中表示?:
 
pszSubKey As String
pszValueName As String
?于最后一行"}TBSAVEPARAMSA,FAR*
LPTBSAVEPARAMSA;"我?只需要用
"End Type"取代
 
---- 就可以了.??成VB代?后完整的???:
 
Public Type tagTBSAVEPARAMSA
hkr As Long
pszSubKey As String
pszValueName As String
End Type
 
---- 以下是VC++中数据???到VB中的数据?型VC++数据?型VB数据?
 
------------------------------------
short Integer
intLong
long Long
UNIT Long
ULONG Long
WORD,DWORD Long
WPARAM,LPARAM Long
WMSG,UMSGLong
HRESULT Long
BOOL Boolean
COLORREF Long
HWND,HDC,HBRUSH,HKEY,等等. Long
LPSTR,LPCSTRString
LPWSTR,OLECHAR,BSTR String
LPTSTRString
VARIANT_BOOLBoolean
unsigned char Byte
BYTE Byte
VARIANT Variant
(任何以*或**?尾的数据?型)Long
 
---- 3.函数的??
 
----?知道VB提供了API Viewer add-in,但是有很多API函数它并没有包括在内. 因此知道如何把VC++函数??成VB的函数格式是非常重要的.先看第一个例子:
 
WINCOMMCTRLAPI HWND WINAPI
CreateStatusWindowsA(LONG style,
LPCSTR lpszTest,HWND hwndParent,UINT wID);
 
---- ?个函数?建一个StatusBar控件.从WINCOMMCTRLAPI可以得知?函数来自?? ??ComCtl32.dll.(有?,我?需要从MSDN中?找某函数??的DLL) 然后我?知道?函数的返回?型是HWND,??VB的?型是Long.最后,根据前面提到 ???表,很容易的???的函数参数.
 
Public Declare Function CreateStatusWindowA Lib
"ComCtl32.dll" _
(Byval style As Long, _
Byval lpszText As String, _
Byval hwndParent As Long,Byval wID As Long) As Long
 

更新日 99/05/18
名前 yang