程序可以创建多少个用户界面对象?

news2024/10/4 20:20:29

有人提到这样一个问题:”一个程序最多可以注册多少个窗口类?”

问题的答案不是一个具体的数字。因为大多数用户界面对象都来自一个共享的内存池,我们称之为”桌面堆内存”。尽管我们可以计算一个最大的理论值,但是在实际的场景中,这个理论值不会达到,因为还有很多其他用户界面对象也是在这个桌面堆中。

举个例子,用户可见的菜单对象和窗口对象保存在桌面堆中,还有一些其他不可见的对象也保存在其中,例如:激活的窗口枚举,窗口的位置句柄,甚至挂接的线程输入队列等。

如果创建了过多的窗口或者菜单,则留给其他对象(例如,注册窗口类)的空间就不多了,因为所有这些用户界面对象都共享同一个内存空间。

当有人问这类问题的时候,通常真正的问题是他们的程序消耗了太多的桌面堆空间,程序可能需要重新设计,以节省对桌面堆资源的占用。例如,一个程序如果需要创建几千个窗口类,这会极大的占用桌面堆空间,通常,这表明这个程序在设计方面需要做出调整。

另外一个类似的问题是:一个进程最多可以创建多少个线程。我们可以计算出理论值,但这样是一个程序需要重新设计的标志。

另一方面来说,即使一个应用程序真的可以创建几千个窗口类,用户使用起来也会感到疑惑,所以,从可用性的角度来说,最好还是重新设计,以不那么多的占用资源。

总结

程序开发早期,我会使用 GUI 对象监测工具来查看创建的用户界面对象的数量,看看是否有点“设计过重”。
因为一旦开发到了后期,重新设计的成本将会十分巨大。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《On the unanswerability of the maximum number of user interface objects a program can create》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模仿企业微信界面

备注&#xff1a;未实现相关功能&#xff0c;仅模仿界面&#xff0c;不能作为商业用途&#xff0c;若有侵权&#xff0c;请联系删除。 <Window x:Class"模仿企业微信界面.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"…

身为网络工程师必考证书:华为HCIP认证!

为了找到一份心仪的工作&#xff0c;有的人选择入职前先自我提升考取贴合岗位需求的从业相关证书&#xff0c;进而面试并开始工作&#xff0c;有的人选择先从“基层”开始积累经验为首&#xff0c;先进入行业内夯实基础&#xff0c;学习和考证作为了工作“平稳”后的计划。 很…

Qt Creater 设计的登录注册界面 使用SQLite数据库

Qt Creater 设计的登录注册界面 使用SQLite数据库 案例截图 登录页面 注册页面 项目目录结构截图 代码 main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;//第一个是…

AUTOSAR通信篇 - CAN网络通信(七:Nm)

文章目录 基础功能NM协调器功能NM协调器功能的适用性保持协调总线活动总线关闭的协调嵌套子总线的协调关闭定时器的计算同步用例1 – 同步指令同步用例2-同步启动同步用例3 -同步网络睡眠示例 唤醒和中止协调关闭外部的网络唤醒协调唤醒协调关闭的中止 部分网络功能PNC位向量过…

高速电路设计----第三章(2)LVDS信号详解

一、TTL和CMOS不适用于高速电路设计的原因&#xff08;都是数字电路信号&#xff09; 原因&#xff1a; ①电平幅度较大&#xff0c;电平最低都达到了2.5V或者3.3V。因此信号沿变化所需要的时间很长。不适合大于200MHZ的信号。 ②容易被干扰&#xff0c;输出信号为单端&#xf…

Ubuntu OpenLDAP配置笔记

Ubuntu OpenLDAP配置笔记 问题&#xff08;需求&#xff09;LDAP服务端安装slapd和ldap-utils配置域名编辑hosts修改主机名验证增加一个域账号修改用户的密码 Linux桌面加域安装软件验证允许远程账号首次登录时自动创建HOME目录桌面登录 其它问题Ubuntu更新和安装太慢LDAP服务端…

安装了WinRAR,但是右键发现没有压缩选项,怎么办

我们安装了WinRAR之后想要压缩文件&#xff0c;但是右键点击文件之后发现并没有WinRAR压缩选项&#xff0c;这应该如何设置才能出现右键带有压缩选项呢&#xff1f;方法如下&#xff1a; 首先打开WinRAR&#xff0c;在上面功能中点击选项 – 设置 然后我们在设置界面中切换到集…

基于Restful的WebService

目录 Restful简介 1. 资源(Resources) 2. 表述性状态转移(Representational State Transfer) 3. URL(统一资源定位符) 4. 数据格式(Data Format) 5. 状态码(Status Codes) 6. 超媒体(Hypermedia) 7. 无状态性(Statelessness) 8. 资源关系(Resource Relationships) 9.…

WinCC趋势跨度设置(时间范围)

控件&#xff1a;输入输出域、组合框、按钮、实时趋势控件 输入输出域 对象名称&#xff1a;IOI 域类型&#xff1a;输入 组合框 对象名称&#xff1a;cb 索引与文本一一对应 按钮VB Sub OnClick(Byval Item) …

RustCC分享会|非凸科技与开发者共同探讨Rust安全进化

10月15日&#xff0c;非凸科技受邀参加RustCC联合多家开发者社区组织的Global Tour of Rust技术分享活动&#xff0c;旨在为Rust开发者提供交流互动的平台&#xff0c;分享Rust语言的知识、经验和最佳实践。 活动上&#xff0c;非凸科技成都分公司研发总监赵海峰以“Rust安全进…

【框架源码篇 05】Spring源码篇-ApplicationContext

Spring源码篇-ApplicationContext 前面通过手写IoC&#xff0c;DI、AOP和Bean的配置。到最后ApplicationContext的门面处理&#xff0c;对于Spring相关的核心概念应该会比较清楚了。接下来我们就看看在Spring源码中&#xff0c;对于的核心组件是如何实现的。 一、ApplicationC…

光环云入选“北京市算力互联互通试点参与企业”!

为进一步贯彻落实工业和信息化部等六部委联合印发的《算力基础设施高质量发展行动计划》&#xff0c;扩大北京市算力互联互通试点参与范围&#xff0c;助力建设全球数字经济标杆城市&#xff0c;北京市通信管理局组织相关专家对申报第二批参与试点企业开展评估&#xff0c;光环…

docker 部署服务案例

mysql Centos7为例 NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31" CPE_NAME"cpe:/o:centos:cento…

mysql之通过表名来搜索库名

1、经常遇到查日志时候知道表名&#xff0c;但是不知道在哪个库下面&#xff0c;可以通过此sql语句查询。 SELECT * FROM information_schema.TABLES WHERE table_name tb_xxxxxx;

python之代理ip的配置与调试方法详解

代理IP在Python中是一种强大的工具&#xff0c;它可以用于隐藏真实IP地址、绕过访问限制、提高数据爬取和网络请求的效率等。下面将详细介绍Python中代理IP的配置与调试方法&#xff0c;帮助您更好地理解和应用代理IP。 1. 选择合适的代理IP 在使用代理IP之前&#xff0c;需要…

vtk 多边形绘制 vtkPolygon 三角形 矩形 多边形

vtk 可以通过 vtkPolygon 绘制 三角形 矩形 多边形 目录 vtk 可以通过 vtkPolygon 绘制 三角形 矩形 多边形 效果&#xff1a; 源码&#xff1a; 效果&#xff1a; 三角形 矩形&#xff1a; 多边形&#xff1a; 源码&#xff1a; #include "vtkAutoInit.h" VTK_M…

通过电脑操作安卓手机数据恢复最好的几个工具

在本次评测中&#xff0c;我将介绍适用于 PC (Windows 10/11) 的最佳 Android 数据恢复软件&#xff0c;它可以帮助您从通过 MTP 连接的手机或平板电脑上恢复文件和数据。 2023 年适用于 PC 和 Mac 的最佳安卓数据恢复软件 1、U1tData安卓数据恢复&#xff08;奇客软件&#xf…

599L是什么芯片,sot23-6封装591NW

60转5v-599L芯片具有以下特点&#xff1a; - 600mA的连续输出电流能力 - 宽输入工作范围&#xff0c;从4.5V至60V - 集成了80V、550mQ高侧和80V、350mQ低侧功率MOSFET开关 - 高达95%的效率 - 内部软启动功能&#xff0c;限制开机时的浪涌电流 - 内部补偿功能&#xff0c;减少外…

程序员空闲时间能不能找其他副业?还是该继续卷技术?

我认为这是个伪命题&#xff01;程序员都在996/007&#xff0c;哪来的空闲时间&#xff0c;这是让他们不睡觉吗&#xff1f; 那些有空闲时间的程序员应该是还没找到工作的程序员吧&#xff01;主业都没有&#xff0c;谈什么副业。 假如有少部分人&#xff0c;是属于985的程序…

超实用的跟圈和一键转发好友朋友圈功能

一键转发朋友圈/跟圈 想转发别人的朋友圈内容&#xff0c;通常需要手动复制粘贴&#xff0c;一个个复制保存实在是太麻烦耗费时间。 有时候咱也不可能随时都看朋友圈嘛&#xff0c;那又想及时转发朋友的圈的&#xff0c;有什么办法可以轻松实现呢&#xff1f; 操作步骤 单击…