--- 我?先看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 |
|