VB教程

源代码在线查看: ba35.htm

软件大小: 170 K
上传用户: rentianchou
关键词: VB教程
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				怎样把VC++代码转换成VB代码
				 
				
				 
				
				
				
				
				  
				  
				     
				      
				      
				          
				             
				             
				               
				                 
				    
				
				   
				   
				       
				        				      class=table width=755>
				          
				             
				               
				               
				                 怎样把VC++代码转换成VB代码 
				              
				            
				             
				              				            width="100%" class="unnamed1" height="124"> 
				                
				                    对于大多数VB的爱好者来说,在很多情况下都想通过使用API函数来实现一些比较高级的功能或达到某种特殊效果,这就需要用到一些VC++的代码. 
				                  
				                    本文就如何把VC++代码转换成VB代码给出了一些策略和方法. 
				                    1.定义常量 
				                    我们首先看第一个例子: 
				                  #define STD_COPY 1//COMMCTRL.H 
				                    在VC++代码中用#define定义常量,而在VB中是用Const来定义,因此转换成VB的代码是: 
				                  Public Const STD_COPY=1 
				                    第二个例子: 
				                  #define LB_SELECTSTRING0x018C //WINUSER.h
				                    这有一个问题,VC++中所有以"0x"开头的值是十六进制,而在VB中表示十六进制要用"&H"开头.因此转换成VB的代码为: 
				                  
				                  Const LB_SELECTSTRING = 0x018C
				                    第三个例子: 
				                  #define TCN_FIRST(0U-550U) 
				                    这里有个特别的是定义的值是以"U"结尾,这是意味着该常量的类型是"unsigned long"(在VB中不支持 
				                  该数据类型).但是unsigned long和signed long(在VB中是Long)两种数据类型的值在存储方式上是一样 
				                  的,只是表现的形式不同.因此,我们只需要去掉末尾的"U"就可以了. 
				                  Const TCN_FIRST=(0-550) 这同样适合以"L"结尾的值 
				                    另外,对于 #define CDDS_ITEMPOSTERASE(CDDS_ITEM | CDDS_POSTERASE),我们需要用"Or"来取代"|" 
				                  
				                    2.结构的定义 
				                    我们先看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
				                  
				                  转载自计算机世界日报 (文/刘锋)
				              
				            
				          
				           
				             
				              (上一页)---(下一页)
				            
				          
				           
				             
				               
				    
				      
				  
				  
				
				
				
				
							

相关资源