VB6中自动引用某些库的问题的原因

其实这个真让我郁闷了一下子.

我给朋友写了一个报警软件,功能上非常简单,就是检测指定的进程是否存在,以及网络是否有连接.

如果有不符合的,就在托盘弹出提示,同时可以以系统的打开方式执行一个指定的文件.

程序分为主界面与一个设置界面.

可是,拿到朋友那里用时,只要一点击设置按钮,就会报"类未注册,需要在机器中安装下列文件:MSSTDFMT.DLL"

我就郁闷了.我根本没有引用过这个DLL啊.

我甚至连它有什么用我都不知道......真是怪事.

打开工程一看,哎,果然,引用里面是多了一个"Microsoft Data Formatting Object Library 6.0 (SP6)"

取消,保存,编译.

发给朋友,回曰"照旧"

火了.

再打开工程一看,嘿!!这个引用自己又回来了?!

再次取消,保存,然后再打开引用列表,确认没有再回来后,又一次编译发给朋友.

满以为这下OK了~~结果朋友还是说老样子.

我这下真大火了~~~~~还没遇到过这等事!!这不是有鬼嘛!!!

今天我就不信这个邪了!!!

然后再次地打开,看引用:咦,竟没有!!真是怪了!!

非常非常的莫名其妙!!

然后N次地打开,关闭,编译,保存...终于让我发现了一个规律:

只要对设置窗体内的代码有任何改动,那个引用就会自动加上.

真是怪了.难道代码里面使用了那个库里的某个类型?

那也不对啊,如果是那样,编译时肯定会报错的~~

现在编译又不报错!!而且一动代码,那引用还会自动被添加!!

一时没了主意.

将那个窗体从工程里移除,然后关闭工程,闭着眼想了一下:会不会是窗体里面有什么引用?

应该不可能呀,引用只会存在于VBP文件里面...管它,打开FRM文件看看先.

于是就用记事本打开设置窗体的FRM文件frmOption.frm,发现了一个古怪的地方,如下:

Begin VB.TextBox txtTestTime
Appearance = 0 'Flat
BeginProperty DataFormat
Type = 1
Format = "0"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 2052
SubFormatType = 1
EndProperty
Height = 285
Left = 1935
TabIndex = 14
Top = 765
Width = 690
End
Begin VB.TextBox txtPop
Appearance = 0 'Flat
Height = 2265
Left = 135
MultiLine = -1 'True
TabIndex = 9
Top = 945
Width = 3255
End

这分别是两个文本框的描述代码,上面那个怎么就多了点什么....??

一想,才记起,我为了让那个文本框只能输入数字,就在DataFormat属性里设置了Number值.

难道是这个原因?

当下去除属性,还原为默认值,再改动代码,编译,哈哈,果然没有再回来了!!

原来是这样!!

VB6的工程里面一旦有控件使用了未引用的枚举类型,IDE就会自动尝试引用此类型所在的库....

看来,我对VB6的了解还不够,还得继续学习啊~~~~

这个事件算是搞定了!!

评论: 5 | 引用: 0 | 查看次数: 1683
admin
admin[2009-04-10 09:22 PM | ]
引用来自 sinhoi 引用来自 sinhoi
老马,我是google搜索到你站点的,你VB程序写的这么好,怎么不从事软件业了呢?能不能把你写的报警软件代码发给我学习下。谢谢了,老马。

这个代码很简单的,就是不断PING一些大型网站,比如YAHOO,GOOGLE,163等

如果所有网站都超时,就证明断网了.

进程方面,就是不断地枚举进程而已.

相关的代码都封闭成了函数调用,早发在论坛里面了.
sinhoi
sinhoi[2009-04-10 10:33 AM | ]
老马,我是google搜索到你站点的,你VB程序写的这么好,怎么不从事软件业了呢?能不能把你写的报警软件代码发给我学习下。谢谢了,老马。
admin
admin[2008-05-11 06:45 PM | ]
没有明白你是什么意思.
bean
bean[2008-05-11 06:25 PM | ]
我的vb程序不响应ActiveX事件,您好象解决了,能帮帮我不,谢谢
wow
wow[2008-04-03 05:16 AM | ]
还有这回事 学习了