转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
有关API字符串--API programmer请看之二         ★★★★

有关API字符串--API programmer请看之二

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2954 更新时间:2009/4/23 18:58:16
lpwsz = StrPtr(sBSTR)

   

'''' Copy the array

CopyMemory b(1), ByVal lpwsz, cBytes + 2

   

'''' Point lpsz to new array

lpwsz = VarPtr(b(1))

   

'''' Return byte count

BSTRtoLPWSTR = cBytes

   

End Function

 

函数接收一个BSTR和一个动态Byte数组,以及一个长整型变量并将BSTR转换为一个LPWSTR,保存在Byte数组中。数组的首地址赋予lpwsz。它的返回值是数组的长度。下面是一个调用该函数的例子。

 

Dim b() As Byte

Dim lpsz As Long, lng As Long

lng = BSTRToLPWSTR("here", b, lpsz)

   

如果你仔细看了BSTR和C语言类型的LPSTR和LPWSTR这几个部分的话,你会发现,其实上面三句代码与下面代码等价。

 

lpsz = StrPtr(sBSTR)

 

从BSTR到LPSTR

将BSTR转换到LPSTR与LPWSTR类似,只须注意Unicode格式到ANSI格式的转换就行了。函数如下:

 

Function BSTRtoLPSTR(sBSTR As String, b() As Byte, lpsz As Long) As Long

   

'''' Input: a nonempty BSTR string

'''' Input: **undimensioned** byte array b()

'''' Output: Fills byte array b() with ANSI char string

'''' Output: Fills lpsz with a pointer to b() array

'''' Returns byte count, not including terminating null

'''' Original BSTR is not affected

   

Dim cBytes As Long

Dim sABSTR As String

   

cBytes = LenB(sBSTR)

   

'''' ReDim array, with space for terminating null

ReDim b(1 To cBytes + 2) As Byte

   

'''' Convert to ANSI

sABSTR = StrConv(sBSTR, vbFromUnicode)

   

'''' Point to BSTR char array

lpsz = StrPtr(sABSTR)

   

'''' Copy the array

CopyMemory b(1), ByVal lpsz, cBytes + 2

   

'''' Point lpsz to new array

lpsz = VarPtr(b(1))

   

'''' Return byte count

BSTRtoLPSTR = cBytes

   

End Function

 

从LPWSTR到BSTR

 

如果从一个API函数返回是LPWSTR(就是说一个指向空字节结尾的Unicode格式的字符串指针),Visual Basic可以轻松地将它转换为BSTR。

以下是一个小小的工具函数:

 

Function LPWSTRtoBSTR(ByVal lpwsz As Long) As String

   

'''' Input: a valid LPWSTR pointer lpwsz

'''' Return: a sBSTR with the same character array

   

Dim cChars As Long

   

'''' Get number of characters in lpwsz

cChars = lstrlenW(lpwsz)’该函数为strlen的C语言版本

   

'''' Initialize string

LPWSTRtoBSTR = String$(cChars, 0)

   

'''' Copy string

上一页  [1] [2] [3] [4] [5]  下一页


[VB.NET程序]有关API字符串--API programmer请看之一  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台