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

田晓丹happy1

田晓丹happy1

2016-02-19 14:52

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

  对于大多数VB的爱好者来说,在很多情况下都想通过使用API函数来实现一些比较高级的功能或达到某种特殊效果,这就需要用到一些VC++的代码.

  本文就如何把VC++代码转换成VB代码给出了一些策略和方法.

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

  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中表示为:

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

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
怎样把VC++代码转换成VB代码

怎样把jpg转换成word

电脑网络
怎样把jpg转换成word

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java中把汉字转换成简拼的实现代码

编程语言 网络编程
java中把汉字转换成简拼的实现代码

怎么把swf转换成gif

办公软件 软件教程
怎么把swf转换成gif

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎么把excel转换成pdf

电脑网络
怎么把excel转换成pdf

怎么把word转换成图片

电脑入门
怎么把word转换成图片

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Tab键的多种用途

Tab键的多种用途

老毛桃一键还原详细使用教程

老毛桃一键还原详细使用教程
下拉加载更多内容 ↓