| | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | |      |
|
小项目搞定,Money入了口袋~~~~ [ 2006-08-11
| 作者:马大哈 | 来自:本站原创]
 |
1500成功进入口袋.
其实对方打过来1700,因为我还花了180买了个ATI7000的双头显卡.
爽~~
结果刚做完这个,那个朋友又说马上又有一个项目,问我要不要做,关于USB电话录音盒的,¥2000,时间最长一个月.
当然是做啦!! 
然后他就发来了那个USB板子,让我来做.
这个程序由于对方要求要用VC做,而我不会......
所以朋友帮我与项目客户商量了一下,用VC写核心,用VB写界面.
OK,这个没问题,因为客户随卡提供了一个BCB例程,与C差不多,在VC里改了一下,编译成了一个DLL,并做好了接口,供VB里调用.
里面有个问题就是字符串的返回问题.
我要从DLL里把字符串数据返回到VB里,怎么做呢?函数直接返回字符串是不可能的(VB内部函数可以).
我自己还没有做过这个,所以查了些资料.
结果我硬盘里的资料也没有说到这个问题.只说到如何写VB能调用的DLL.
于是就仿照MS那样,向缓冲区写内容,再返回写入的长度.
如下:
//把打入电话号码存入指定缓冲区,同时返回复制的字符串个数
WORD WINAPI GetInTelNum(char *tmpNum)
{
strcpy (tmpNum,InTelNum);
return strlen(tmpNum);
}
那么VB里的声明就是这样:
Public Declare Function GetInTelNum Lib "RECBox_DLL.dll" (ByVal TelNum As String) As Long
参数"ByVal TelNum As String"一定要是个足够长的定长字符串才行.不然有问题.
调用就好说了:
Dim tmpTelNum As String * 255
Dim TelNum As String
Dim I As Long
I = GetInTelNum(tmpTelNum)
If I <> 0 Then
TelNum= Left(tmpTelNum, I)
Else
TelNum = ""
End If
好,以后写VC VB混合程序,就知道一种方法了.
加油干~~~~~¥2000呢~~ 
PS:
这位朋友说,叫我加油写,因为他手头还有几个项目呢!
|
|
|
|
|