关于 VB6.0 窗体类模块的使用问题

Oceanable 2019-08-05 11:38:26
开始以为VB6中的窗体模块是实例而不是类,所以一直当做一个实例来使用
每次都是未 new 就直接 show 。。。糊里糊涂的反正也没出什么问题

最近了解到这窗体既可以是类,也可以按照实例来使用。。。
反而觉得不太自在了呵呵

我觉得还是将窗体视为类模块比较好理解,,然后我使用之前先创建 set form1 = new FormClass

从代码的安全性来讲,肯定是 new 后再使用更胜一筹吧???
有什么问题需要注意?
还是用回原来的糊涂方式反而更安全?

...全文
475 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在还是人类 2019-08-12
  • 打赏
  • 举报
回复
你可以自己在VB里用 Windows SDK 方式创建窗口建立一个类似Form的类,方法、属性、事件等可以模拟VB的Form,模拟完成后你就知道什么时候创建和卸载对象了
Oceanable 2019-08-12
  • 打赏
  • 举报
回复
另外,我还发现两种窗体的调用方式,窗体的size有点点不同,呵呵

如果是按照类来使用的话,窗体没有做 form load 这一步,,,

引用 4 楼 现在还是人类 的回复:
Me.Hide 是隐藏,而不是关闭,当然卸载不了


但是如果我将窗体视为对象,直接show的话,用 unload 是可以卸载的
Oceanable 2019-08-06
  • 打赏
  • 举报
回复
刚才发现了这样的问题: 1)dll 的窗体里面我加了代码,想自己来控制窗体的卸载: ------------------------------------------------------------------ Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then Me.Hide If UnloadMode = 0 Then Cancel = 1 End Sub ------------------------------------------------------------------ 2)DLL 类代码我这样写的: Dim Face As oFormMain ------------------------------------------------------------------ Private Sub Class_Initialize() Set Face = New oFormMain End Sub ------------------------------------------------------------------ Private Sub Class_Terminate() Unload Face End Sub 然后发现窗体卸载不了:就是每创建一次 dll 就创建一个 face,但是 face 无法卸载
现在还是人类 2019-08-06
  • 打赏
  • 举报
回复
Me.Hide 是隐藏,而不是关闭,当然卸载不了
Oceanable 2019-08-06
  • 打赏
  • 举报
回复
我在dll里面放了一个窗那么放?这个窗体也是一个全局变量了。是不是dll被set nothing的时候窗体也会被释放? 我想将这个窗体作为dll的一个属性。这样处理会会有什么问题?
milaoshu1020 2019-08-05
  • 打赏
  • 举报
回复
比如你在设计器创建一个窗口Form1,VB6在创建类的同时也隐式的声明了一个类的全局对象Form1;
相当于在一个模块中定义了如下语句:
Public Form1 As New Form1
所以你可以直接使用Form1类的对象Form1;
我觉得安全性没区别,主要是用法不一样:
new方法可以创建类的多个对象;
而直接使用类名对象则只能对应一个全局的对象;

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧