怎样把VC++代码转换成VB代码

2016-02-19 14:52 45 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的怎样把VC++代码转换成VB代码,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

  对于大多数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的代码为:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
ConstLB_SELECTSTRING=0x018C

  第三个例子:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
#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中表示为:

pszSubKeyAsStringpszValueNameAsString对于最后一行"}TBSAVEPARAMSA,FAR*LPTBSAVEPARAMSA;"我们只需要用"EndType"取代

  就可以了.转换成VB代码后完整的结构为:

PublicTypetagTBSAVEPARAMSAhkrAsLongpszSubKeyAsStringpszValueNameAsStringEndType

  以下是VC++中数据类型对应到VB中的数据类型VC++数据类型VB数据类型

shortIntegerintLonglongLongUNITLongULONGLongWORD,DWORDLongWPARAM,LPARAMLongWMSG,UMSGLongHRESULTLongBOOLBooleanCOLORREFLongHWND,HDC,HBRUSH,HKEY,等等.LongLPSTR,LPCSTRStringLPWSTR,OLECHAR,BSTRStringLPTSTRStringVARIANT_BOOLBooleanunsignedcharByteBYTEByteVARIANTVariant(任何以*或**结尾的数据类型)Long

  3.函数的转换

  我们知道VB提供了APIVieweradd-in,但是有很多API函数它并没有包括在内. 因此知道如何把VC++函数转换成VB的函数格式是非常重要的.先看第一个例子:

WINCOMMCTRLAPIHWNDWINAPICreateStatusWindowsA(LONGstyle,LPCSTRlpszTest,HWNDhwndParent,UINTwID);

  这个函数创建一个StatusBar控件.从WINCOMMCTRLAPI可以得知该函数来自动态链接库ComCtl32.dll.(有时,我们需要从MSDN中查找某函数对应的DLL)然后我们知道该函数的返回类型是HWND,对应VB的类型是Long.最后,根据前面提到类型对应表,很容易的转换相应的函数参数.

PublicDeclareFunctionCreateStatusWindowALib"ComCtl32.dll"_(ByvalstyleAsLong,_ByvallpszTextAsString,_ByvalhwndParentAsLong,ByvalwIDAsLong)AsLong

来源:http://www.tulaoshi.com/n/20160219/1608207.html

延伸阅读
怎么把jpg转换成pdf jpg转换成pdf图文教程: 第1步:打开电脑上安装的迅捷jpg转换成pdf转换器,选择菜单栏上的图片转PDF转换模式。 第2步:单击添加文件按钮,在打开的窗口中找到需要转换的jpg文件,选中,然后点击打开按钮将其添加到软件中。 第3步:jpg文件添加完成,设置转换文件的保存位置,并勾选将所有图片合...
怎么把PDF文件转换成PPT 怎么把PDF文件转换成PPT?PDF文件常常出现在我们日常工作和学习中,很多人应该都发现网上下载的资料现在越来越多是以PDF格式存在的,如果这些资料只供我们阅读是非常方便的,但是多数情况下是需要利用里面的内容。比如领导安排做个培训课件,需要做PPT幻灯片,一定涉及很多知识及案例等内容。PDF文档中的信息如何提...
怎么把pdf转换成word文档 怎么把pdf转换成word?迅捷PDF转换成Word转换器转换过程非常简单,下面我们就一起看看这款软件是如何将pdf文件转换成word文件的吧! 步骤1:在电脑中下载安装最新版迅捷PDF转换成Word转换器。 步骤2:打开迅捷PDF转换成Word转换器,选择文件转word转换模式。 步骤3:点击添加文件按钮,将需要...
如何把word转换成pdf格式 迅捷Word转换成PDF转换器转换过程: 准备:下载迅捷Word转换成PDF转换器,点击安装。 编辑提示:安装前需要保证网络连接通畅。 第一步,打开迅捷Word转换成PDF转换器,选择您需要使用的模式,如果需要将word文件转化为PDF文件,点击右上方的office转PDF模式。 第二步,点击左下角的的&quo...
怎么把pdf文件转换成excel 前面图老师小编给大家介绍了 pdf文件怎么转换成word ,很多网友看到后就在问,能不能把pdf文件转换成excel呢?怎么把pdf文件转换成excel?为了解决大家的疑问,今天我们就一起来看看pdf文件转换成excel教程,希望能对大家有所帮助。 首先,我们先来了解一下将pdf文件转换成excel的转换工具迅捷pdf转换成...

经验教程

825

收藏

83
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部