您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > VB开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-与“蠕虫王”战斗到底
-三款资源访问辅助工具使用
-五款即时通讯软件横向比较
-天极贺卡大赛新春贺卡精选

Visual Basic编程疑难问题解(一)
2003-02-03· ···yesky

1 2 3 4  下一页


  [前言:]在这个专题中我收集了一些在Visual Basic编程中的常见问题,这些问题均来自论坛,本专题以解决实际问题主要目的。

  问:VB中如何使用C++类?

  答:把vc的类编译成dll文件,这样的话就可以使用,最好是作为组件com来使用。

  VB调用DLL的方法和调用Windows API的方法是一样的,一般在VB的书中有介绍。对于上面一个例子,先要声明VC函数:

Declare Function sample Lib "mydll.dll" (ByVal nLen As Integer, buffer As Integer) As Integer

  这里mydll.dll是你的dll的名字。你可能已经注意到了两个参数的声明有所不同,第一个参数加上了ByVal。规则是这样的:如果在VC中某个参数声明为指针和数组,就不加ByVal,否则都要加上ByVal。在VB中调用这个函数采用这样的语法:

  sample 10, a(0)

  这里的a()数组是用来存放数据的,10为数组长度,这里的第二个参数不能是a(),而必须是要传递的数据中的第一个。这是VB编程的关键。

  下面在说几个可能遇到的问题。一个问题是VB可能报告找不到dll,你可以把dll放到system目录下,并确保VB的Declare语句正确。另一个问题是VB报告找不到需要的函数,这通常是因为在VC中*.def文件没设置。第三种情况是VB告诉不能进行转换,这可能是在VC中没有加上__stdcall关键字,也可能是VB和VC的参数类型不一致,注意在VC中int是4个字节(相当于VB的Long),而VB的Integer只有2个字节。必须保证VB和VC的参数个数相同,所占字节数也一致。最后一个要注意的问题是VC中绝对不能出现数组越界的情况,否则会导致VB程序崩溃。

  问:怎样用编程方式在窗体上创建一个label或textbox?

  答:代码如下:

'声明
Private WithEvents NewButton As ComandButton
'1,添加
Set NewButton=Controls.Add("VB.CommandButton","cmdNew",Me)
NewButton.Move 0,0,Width,Height
NewButton.Visible=True

'2,删除
Controls.Remove NewButton
Set NewButton=Nothing

  问:如何把一个已编译的EXE程序打包到VB中再编译呢?

  答:你需要先编写一个程序B,并将其编译为EXE。如果你希望今后允许程序A定制程序B的某个文本框,可以先将该文本框的Caption属性设置为“Change Me!Change Me!”之类首先定义好的字符串。然后程序A以二进制方式打开程序B,然后在其中查找“Change Me!Change Me!”字符串,并将其改变为程序A中设置的文字。但这种方法有几个缺点:

  1、字符串长度有限;

  2、对于VB来说,编译后有的中文字符串编译后格式有些办法,不好处理。

  也可以采用另一种办法。程序A将设置信息保存在程序B文件的尾部。用程序B以二进制方式打开其自己的EXE文件,利用Seek命令移动到指定位置读出设置信息。如:

Dim s As String * 100

On Error GoTo ErrHandler
Open App.Path + "\" + App.EXEName + ".EXE" For Binary As #1
Seek 1, 20480 ' 这里是EXE文件的长度
Get 1, , s
Label1.Caption = s
Close #1
Exit Sub

  问:如何确定EXE文件的长度的具体数值呢?

  答:先编译程序B,看看程序B的EXE文件的长度,例如17234。然后将上面的20480改为17234,再编译一次程序B。

1 2 3 4  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 实战Visual Basic条形码编程
 FSO对象模型在VB中的应用
 如何编写高质量的VB代码
 运用VB.net创建Web服务访问程序
 VB多类图片数据库存取技巧
 用VB6设计有趣的动画场景
 用VB设计有安全认证服务的Email
 VB串口使用心得两则
 VB.NET实现超级ptm查看器
 VB.NET注册表编程
 VB中利用OpenGL绘制三维地质构造图
 如何在VB例程中接收自定义消息
 怎样实现在VB窗体中有Html页面
 如何用VB.Net创建一个三层的数据库应用程序
 Visual Studio使可编程Web语言的革新发生在VB.NET中
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!