unibbs 发表于 2008-9-25 10:01:56

阿杰 发表于 2008-9-26 07:53:44

<font face="Verdana">
<p><font face="Verdana">这不是VB函数添加大师的问题,而是WINDOWS的约定</font></p>
<p><font face="Verdana">因为编写标准的DLL是不允许返回字符型和传递字符型参数的,只有通过内存指针地址来实现<br/>下面给你写了个传递与返回字符的例子,希望对你有所帮助。</font></p></font>
<p><font face="Verdana"><a href="http://www.m5home.com/bbs/viewthread.php?tid=1698&extra=&page=1">http://www.m5home.com/bbs/viewthread.php?tid=1698&extra=&page=1</a></font></p>
[此贴子已经被作者于2008-9-26 7:54:05编辑过]

马大哈 发表于 2008-9-26 15:05:43

<p>没错</p>
<p>&nbsp;</p>
<p>对于字符串的返回,不能像VB内部函数那样直接返回,而要使用系统API的方式返回.</p>
<p>&nbsp;</p>
<p>具体在阿杰的例子里以及本程序安装包内示例代码里都有详细说明.</p>

unibbs 发表于 2008-9-26 17:59:05

有心人 发表于 2009-5-13 12:52:25

<p>我也想请问一下马哥,我做了一个类似于inputbox中的DLL,用函数添加大师编译后,使用要出错,我刚才看了上面的谈话,知道是我代码的问题了,关键是我现在不知怎么解决这个问题。我DLL中的代码是这样的</p>
<p><font face="Verdana">Public Tex As String</font></p>
<p><font face="Verdana">Public Function XInputBox(Prompt As String, LxType As Long, Optional Default As String) as string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; InBox.IPrompt = Prompt<br/>&nbsp;&nbsp;&nbsp; InBox.ILxType = LxType<br/>&nbsp;&nbsp;&nbsp; InBox.IDefault = Default<br/>&nbsp;&nbsp;&nbsp; InBox.Show&nbsp; vbModal<br/>&nbsp;&nbsp;&nbsp; XInputBox = Tex</font></p>
<p><font face="Verdana">End Function</font></p>
<p>&nbsp;</p>
<p>我在调用这个函数时,要怎么处理才能像Inputbox一样呢?或是我要怎么处理一下这个函数呢?</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

everyone 发表于 2009-6-29 02:16:53

<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>有心人</i>在2009-5-13 12:52:25的发言:</b><br/>
<p>我也想请问一下马哥,我做了一个类似于inputbox中的DLL,用函数添加大师编译后,使用要出错,我刚才看了上面的谈话,知道是我代码的问题了,关键是我现在不知怎么解决这个问题。我DLL中的代码是这样的</p>
<p><font face="Verdana">Public Tex As String</font></p>
<p><font face="Verdana">Public Function XInputBox(Prompt As String, LxType As Long, Optional Default As String) as string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; InBox.IPrompt = Prompt<br/>&nbsp;&nbsp;&nbsp; InBox.ILxType = LxType<br/>&nbsp;&nbsp;&nbsp; InBox.IDefault = Default<br/>&nbsp;&nbsp;&nbsp; InBox.Show&nbsp; vbModal<br/>&nbsp;&nbsp;&nbsp; XInputBox = Tex</font></p>
<p><font face="Verdana">End Function</font></p>
<p>&nbsp;</p>
<p>我在调用这个函数时,要怎么处理才能像Inputbox一样呢?或是我要怎么处理一下这个函数呢?</p></div>
<p>看这种情况,是不可能直接像inputbox一样返回字符串的,只有使用传入缓冲区再改写内容的方案.</p>
<p>&nbsp;</p>
<p>你见过哪个API是直接返回字符串的?</p>

zzhgb 发表于 2009-10-18 09:25:32

RetureStr =StrConv("Hello!", vbFromUnicode)

马大哈 发表于 2009-10-19 21:43:26

<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>zzhgb</i>在2009-10-18 9:25:32的发言:</b><br/>RetureStr =StrConv("Hello!", vbFromUnicode) </div>
<p>这个办法是对的,能返回.</p>
<p>&nbsp;</p>
<p>加到例子里去.</p>

Tesla.Angela 发表于 2010-6-5 23:24:50

返回个UNICODE_STRING结构体,然后再转换成VB的BSTR。

upring 发表于 2015-4-4 11:37:37

大家真热心{:soso_e198:}
页: [1]
查看完整版本: 返回字符串的问题