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