递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1982|回复: 6
打印 上一主题 下一主题

[视窗] 【解决方案】指针动态创建窗口(不创建无消耗)

[复制链接]

21

主题

290

帖子

1291

积分

金牌会员

Rank: 6Rank: 6

积分
1291
跳转到指定楼层
楼主
发表于 2023-5-15 16:12:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wangvoldp 于 2023-5-15 16:25 编辑

如果有一个设置窗口,用户没点开这个窗口,那没有必要构造这个窗口类
因为火山视图中没有参考,所以定义的窗口都将直接创建对象,占用内存空间
包括所有的类只要在作用于定义变量,构造函数就会执行,内存就会分配
创建对象指针销毁对象指针 可以实现不显示的窗口不占用内存(指针要占4字节)
------------------------------------------------------------
一、动态弹出窗口(弹出窗口可以阻塞线程,函数返回时就能销毁)
挂接事件 (读指针处对象 (Addr, 弹出窗口类))  // 将事件挂接到本类
读指针处对象 (Addr, 弹出窗口类).编辑框.内容 = "测试内容"  // 设置编辑框内容
读指针处对象 (Addr, 弹出窗口类).编辑框.文本颜色 = 颜色类.红色  // 设置编辑框颜色
读指针处对象 (Addr, 弹出窗口类).创建对话框 ()  // 弹出窗口并等待窗口关闭

还是因为没有参考 每次访问弹出窗口的成员属性或方法都需要使用 读指针处对象 (Addr, 弹出窗口类)
不能读取窗口类后放到局部变量,那样会再构造一个 弹出窗口类(浪费),而且就算不考虑浪费,局部变量也只是真实窗口的副本,会有很多副作用
比如不能挂接事件 不能修改标记和标记值 不能修改弹出窗口的成员变量,好多东西都不行
------------------------------------------------------------
二、动态弹出其他窗口(其他窗口可以和主窗口同时操作,所以要用一个类管理他的对象指针)

源码里有个 动态窗口类,他里面只有一个成员变量用来保存对象指针
挂接了 已被销毁 事件,当窗口销毁自动销毁对象指针
当程序结束 或 当类析构时 也自动销毁对象指针
就能实现再多再大的窗口,在不显示时都不会占用内存
1. 创建和销毁动态窗口
如果 (动态窗口.有效 == 假)
    动态窗口.Init (自定窗口类)
    动态窗口.创建窗口 ()
否则
    动态窗口.销毁 ()


2. 访问动态窗口
动态窗口.取对象 (自定窗口类).标题 = "新修改的标题"

动态窗口类 里还有其他功能自己体会吧

动态窗口.zip

55.03 KB, 下载次数: 43

回复

使用道具 举报

68

主题

432

帖子

2832

积分

金牌会员

Rank: 6Rank: 6

积分
2832
沙发
发表于 2023-5-15 16:34:53 | 只看该作者
学习一下。
回复

使用道具 举报

24

主题

209

帖子

1606

积分

金牌会员

Rank: 6Rank: 6

积分
1606
板凳
发表于 2023-5-15 18:45:52 | 只看该作者
这个可以,之前的我写的都是创建完成,不需要就隐藏了
回复

使用道具 举报

4

主题

36

帖子

258

积分

中级会员

Rank: 3Rank: 3

积分
258
地板
发表于 2023-5-22 13:09:25 | 只看该作者
本帖最后由 341991 于 2023-5-22 13:22 编辑

一样的思路。一样的代码。放到EXUI里就不行,MFC就可以,很神奇
好吧,是我的问题,代码写的不对,EXUI也可以,用这个方法就可以不必把按钮写在成员变量里,只需要在成员变量里存一个指针(仅8字节),如果别的方法或线程不需要调用,也可以存局部变量里(8字节占用都省了),需要用的时候创建+挂接,由于指针在成员变量里,别的方法或线程也能调用,用完就销毁+释放内存,
回复

使用道具 举报

21

主题

290

帖子

1291

积分

金牌会员

Rank: 6Rank: 6

积分
1291
5#
 楼主| 发表于 2023-5-22 13:55:51 | 只看该作者
341991 发表于 2023-5-22 13:09
一样的思路。一样的代码。放到EXUI里就不行,MFC就可以,很神奇
好吧,是我的问题,代码写的不对,EXUI也可 ...

是的呢, 火山没参考,那些定义变量的窗口,里面的类变量全都会构造,又费内存又费cpu,
特别是窗口都销毁了,窗口类的其他成员类, 他们还在内存中,属实浪费,
如果火山支持参考, 那这些问题都没了
回复

使用道具 举报

1

主题

177

帖子

733

积分

高级会员

Rank: 4

积分
733
6#
发表于 2023-6-6 10:27:37 | 只看该作者
6666666666666666666666
回复

使用道具 举报

4

主题

95

帖子

385

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
385
7#
发表于 2023-7-6 16:03:12 | 只看该作者
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-6-30 18:31 , Processed in 0.095708 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表