⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ba35.htm

📁 VB教程
💻 HTM
字号:
<HTML>
<HEAD>
<TITLE>怎样把VC++代码转换成VB代码</TITLE>
 
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
 
</head>
<p align="center"><script src="../../1.js"></script></a>
<BODY topMargin=4 vLink=#0000ff>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
  <TBODY>
  <TR>
    <TD height="52"> 
      <DIV align=center>
      <CENTER>
          <table border=0 cellpadding=0 cellspacing=0 width=679 align="center">
            <tbody> 
            <tr> 
              <td width=200 height="59"> 
                 
    </TD></TR><!--msnavigation--></TBODY></TABLE>
<table border=0 cellpadding=0 cellspacing=0 width="100%">
  <tbody> 
  <tr><!--msnavigation--><td valign=top height="123"> 
      <div align=center> 
        <table border=1 bordercolor=#b9d9ff cellpadding=0 cellspacing=0 
      class=table width=755>
          <center>
            <tr> 
               
              <td width="100%" height="9"> 
                <div align="center"> <strong><b>怎样把VC++代码转换成VB代码</b> </strong></span></div>
              </td>
            </tr>
            <tr> 
              <td 
            width="100%" class="unnamed1" height="124"> 
                <div align="left"><br>
                    对于大多数VB的爱好者来说,在很多情况下都想通过使用API函数来实现一些比较高级的功能或达到某种特殊效果,这就需要用到一些VC++的代码. 
                  <br>
                    本文就如何把VC++代码转换成VB代码给出了一些策略和方法. <br>
                    1.定义常量 <br>
                    我们首先看第一个例子: <br>
                  #define STD_COPY 1//COMMCTRL.H <br>
                    在VC++代码中用#define定义常量,而在VB中是用Const来定义,因此转换成VB的代码是: <br>
                  Public Const STD_COPY=1 <br>
                    第二个例子: <br>
                  #define LB_SELECTSTRING0x018C //WINUSER.h<br>
                    这有一个问题,VC++中所有以&quot;0x&quot;开头的值是十六进制,而在VB中表示十六进制要用&quot;&amp;H&quot;开头.因此转换成VB的代码为: 
                  <br>
                  Const LB_SELECTSTRING = 0x018C<br>
                    第三个例子: <br>
                  #define TCN_FIRST(0U-550U) <br>
                    这里有个特别的是定义的值是以&quot;U&quot;结尾,这是意味着该常量的类型是&quot;unsigned long&quot;(在VB中不支持 
                  该数据类型).但是unsigned long和signed long(在VB中是Long)两种数据类型的值在存储方式上是一样 
                  的,只是表现的形式不同.因此,我们只需要去掉末尾的&quot;U&quot;就可以了. <br>
                  Const TCN_FIRST=(0-550) 这同样适合以&quot;L&quot;结尾的值 <br>
                    另外,对于 #define CDDS_ITEMPOSTERASE(CDDS_ITEM | CDDS_POSTERASE),我们需要用&quot;Or&quot;来取代&quot;|&quot; 
                  <br>
                    2.结构的定义 <br>
                    我们先看VC++定义的一个比较简单的结构: <br>
                  typedef struct tagTBSAVEPARAMSA{<br>
                  HKEY hkr;<br>
                  LPCSTR pszSubKey;<br>
                  LPCSTR pszValueName;<br>
                  }TBSAVEPARAMSA,FAR* LPTBSAVEPARAMSA;<br>
                    首先我们需要把第一行的&quot;typedef struct&quot;转换成&quot;Public Type&quot; 
                  <br>
                  Public Type tagTBSAVEPARAMSA<br>
                    然后处理结构成员, <br>
                  HKEY hkr;<br>
                  LPCSTR pszSubKey;<br>
                  LPCSTR pszValueName;<br>
                    对于第一个成员类型HKEY.我们要知道VC++中的以&quot;H&quot;开头的大部分数据类型代表的是某种句柄.在VB中每一个Form对象和许多控件都有一个hWnd属性,它代表所属窗口的句柄.hWnd的类型是Long,并且所有用来存储句柄的变量类型都是Long.因此,该成员在VB中定义为: 
                  <br>
                  hkr As Long<br>
                    同样的,VC++数据类型LPSTR和LPCSTR代表指向字符串的指针,在VB中可以当作String类型.因为当你传送结构给API时,VB将把结构中所有的String转换成指向ANSI字符串的指针.因此后两个成员在VB中表示为: 
                  <br>
                  pszSubKey As String<br>
                  pszValueName As String<br>
                    对于最后一行&quot;}TBSAVEPARAMSA,FAR* LPTBSAVEPARAMSA;&quot;我们只需要用&quot;End 
                  Type&quot;取代 就可以了.转换成VB代码后完整的结构为: <br>
                  Public Type tagTBSAVEPARAMSA<br>
                  hkr As Long<br>
                  pszSubKey As String<br>
                  pszValueName As String<br>
                  End Type <br>
                    以下是VC++中数据类型对应到VB中的数据类型VC++数据类型VB数据类型 <br>
                  ------------------------------------<br>
                  short Integer<br>
                  intLong<br>
                  long Long<br>
                  UNIT Long<br>
                  ULONG Long<br>
                  WORD,DWORD Long<br>
                  WPARAM,LPARAM Long<br>
                  WMSG,UMSGLong<br>
                  HRESULT Long<br>
                  BOOL Boolean<br>
                  COLORREF Long<br>
                  HWND,HDC,HBRUSH,HKEY,等等. Long<br>
                  LPSTR,LPCSTRString<br>
                  LPWSTR,OLECHAR,BSTR String<br>
                  LPTSTRString<br>
                  VARIANT_BOOLBoolean<br>
                  unsigned char Byte<br>
                  BYTE Byte<br>
                  VARIANT Variant<br>
                  (任何以*或**结尾的数据类型)Long <br>
                    3.函数的转换 <br>
                    我们知道VB提供了API Viewer add-in,但是有很多API函数它并没有包括在内. 因此知道如何把VC++函数转换成VB的函数格式是非常重要的.先看第一个例子: 
                  <br>
                  WINCOMMCTRLAPI HWND WINAPI <br>
                  CreateStatusWindowsA(LONG style,<br>
                  LPCSTR lpszTest,HWND hwndParent,UINT wID);<br>
                    这个函数创建一个StatusBar控件.从WINCOMMCTRLAPI可以得知该函数来自动态 链接库ComCtl32.dll.(有时,我们需要从MSDN中查找某函数对应的DLL) 
                  然后我们知道该函数的返回类型是HWND,对应VB的类型是Long.最后,根据前面提到 类型对应表,很容易的转换相应的函数参数. 
                  <br>
                  Public Declare Function CreateStatusWindowA Lib <br>
                  &quot;ComCtl32.dll&quot; _<br>
                  (Byval style As Long, _<br>
                  Byval lpszText As String, _ <br>
                  Byval hwndParent As Long,Byval wID As Long) As Long<br>
                  <br>
                  转载自计算机世界日报 <b>(文/刘锋)</b></font></div>
              </td>
            </tr>
          </center>
          <tr> 
            <td width="100%" class="unnamed1"> 
              <p align=right><a href="ba34.htm">(上一页)</a>---<a href="ba36.htm">(下一页)</a></p>
            </td>
          </tr>
          <tr> 
            <td width="100%" class="unnamed1"> 
               
    </div>
      </td>
  </tr>
  <!--msnavigation--></tbody>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -