|
|
 |
怎样把VC++代码转换成VB代码 |
热 ★★★★ |
|
怎样把VC++代码转换成VB代码 |
|
作者:闵涛 文章来源:闵涛的学习笔记 点击数:813 更新时间:2009/4/23 14:57:50  |
|
|
对于大多数VB的爱好者来说,在很多情况下都想通过使用API函数来实现一些比较高级的功能或达到某种特殊效果,这就需要用到一些VC++的代码.
本文就如何把VC++代码转换成VB代码给出了一些策略和方法.
1.定义常量
我们首先看第一个例子: #defineSTD_COPY1//COMMCTRL.H
在VC++代码中用#define定义常量,而在VB中是用Const来定义,因此转换成VB的代码是:
PublicConstSTD_COPY=1
第二个例子: #defineLB_SELECTSTRING0x018C//WINUSER.h
这有一个问题,VC++中所有以"0x"开头的值是十六进制,而在VB中表示十六进制要用"&H"开头.因此转换成VB的代码为:
ConstLB_SELECTSTRING=0x018C
第三个例子: #defineTCN_FIRST(0U-550U)
这里有个特别的是定义的值是以"U"结尾,这是意味着该常量的类型是"unsigned
long"(在VB中不支持该数据类型).但是unsignedlong和signedlong(在VB中是Long)两种数据类型的值在存储方式上是一样的,只是表现的形式不同.因此,我们只需要去掉末尾的"U"就可以了.
ConstTCN_FIRST=(0-550)这同样适合以"L"结尾的值
另外,对于#defineCDDS_ITEMPOSTERASE(CDDS_ITEM
|CDDS_POSTERASE),我们需要用"Or"来取代"|"
2.结构的定义
我们先看VC++定义的一个比较简单的结构: typedefstructtagTBSAVEPARAMSA{
HKEYhkr;
LPCSTRpszSubKey;
LPCSTRpszValueName;
}TBSAVEPARAMSA,FAR*LPTBSAVEPARAMSA;
首先我们需要把第一行的"typedefstruct"转换成"Public Type" PublicTypetagTBSAVEPARAMSA
然后处理结构成员, HKEYhkr;
LPCSTRpszSubKey;
LPCSTRpszValueName;
对于第一个成员类型HKEY.我们要知道VC++中的以"H"开头的大部分数据类型代表的是某种句柄.在VB中每一个Form对象和许多控
加幸桓鰄Wnd属性,它代表所属窗口的句柄.hWnd的类型是Long,并且所有用来存储句柄的变量类型都是Long.因此,该成员在VB中定义为: hkrAsLong
同样的,VC++数据类型LPSTR和LPCSTR代表指向字符串的指针,在VB中可以当作String类型.因为当你传送结构给API时,VB将把结构中所有的String转换成指向ANSI字符串的指针.因此后两个成员在VB中表示为:
pszSubKeyAsString
pszValueNameAsString
对于最后一行"}TBSAVEPARAMSA,FAR*
LPTBSAVEPARAMSA;"我们只需要用
"EndType"取代
就可以了.转换成VB代码后完整的结构为: PublicTypetagTBSAVEPARAMSA
hkrAsLong
pszSubKeyAsString
pszValueNameAsString
EndType
以下是VC++中数据类型对应到VB中的数据类型VC++数据类型VB数据类型
shortInteger
intLong
longLong
UNITLong
ULONGLong
WORD,DWORDLong
WPARAM,LPARAMLong
WMSG,UMSGLong
HRESULTLong
BOOLBoolean
COLORREFLong
HWND,HDC,HBRUSH,HKEY,等等.Long
LPSTR,LPCSTRString
LPWSTR,OLECHAR,BSTRString
LPTSTRString
VARIANT_BOOLBoolean
unsignedcharByte
BYTEByte
VARIANTVariant
(任何以*或**结尾的数据类型)Long
3.函数的转换
我们知道VB提供了APIVieweradd-in,但是有很多API函数它并没有包括在内.
因此知道如何把VC++函数转换成VB的函数格式是非常重要的.先看第一个例子: WINCOMMCTRLAPIHWNDWINAPI
CreateStatusWindowsA(LONGstyle,
LPCSTRlpszTest,HWNDhwndParent,UINTwID);
这个函数创建一个StatusBar控件.从WINCOMMCTRLAPI可以得知该函数来自动态链接库ComCtl32.dll.(有时,我们需要从MSDN中查找某函数对应的DLL)然后我们知道该函数的返回类型是HWND,对应VB的类型是Long.最后,根据前面提到类型对应表,很容易的转换相应的函数参数.
PublicDeclareFunctionCreateStatusWindowALib
"ComCtl32.dll"_
(ByvalstyleAsLong,_
ByvallpszTextAsString,_
ByvalhwndParentAsLong,ByvalwIDAsLong)AsLong
[VB.NET程序]GSM短信模块库函数,可以用VB,VC,调用简单实用 [办公软件]PowerPoint做交互课件之弃用VBA [办公软件]VBA获取U盘、主板、CPU序列号和网卡MAC地址 [办公软件]VBA设置文件属性及加密源代码示例 [办公软件]VBA中初始化ADO连接的几种方法 [网络安全]“VB破坏者变种N”病毒摘要 [Web开发]ASP.NET上传文件到数据库VB版 [办公软件]在Excel中利用VBA实现多表单元格数据的读取与赋值… [办公软件]使用Vba读取已关闭的Excel工作薄数据到当前工作表… [办公软件]Excel编程基础之VBA文件操作详解
|
|
| 教程录入:mintao 责任编辑:mintao |
|
|
上一篇教程: 用VB 设 计VCD 播 放 器 下一篇教程: VB编程开发常见技巧 |
|
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网] |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| |
|
|
|
|
|
 |
同类栏目 |
 |
 |
赞助链接 |
 |
|
500 - 内部服务器错误。
|
|
|
|
|
|