■〓纯自绘界面的问题〓■

kalala2kalala 2011-02-25 09:37:47
Windows 是基于消息的,当有事件发生时,Windows 就把消息发送到相应的程序。

这里讨论界面与鼠标消息的问题。

Windows 提供了许多内建的控件 (Edit box, Combo box 等等,控件都是子窗口),实际上所有控件都是画出来的,所有的控件在屏幕上占据一块区域(实际由内部结构定义),当鼠标在屏幕上移动时,系统通过查找鼠标光标位于哪个区域上,然后把消息发到对应的窗口相关联的窗口过程(以回调的方式),我在这部分的理解上有一些不明确的地方,就是,如果屏幕上有数百上千个窗口(或控件),那是不是每移动一下鼠标,它都要遍历一遍所有的这些窗口,看鼠标光标到底落在哪个窗口上?这样的开销是不是太大了?Windows 在内部到底是怎么做的?

如果我要实现完全自绘的界面,除了主窗口外,其他所有的界面元素都是自绘的(即不使用 Windows 提供的任何控件),应该是类似于 DirectUI 这种方式吧,我怎么检测鼠标光标落在我的哪个自绘界面元素上呢?除了把所有自绘界面元素遍历一遍进行对比的方法外有没有其他方法呢?没理由每移动一下鼠标都要遍历一遍吧?我总觉得这是一种很笨且效率低下的办法。

在这个问题上能不能使用哈希算法解决?

大家讨论一下
...全文
187 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ww884203 2011-02-25
  • 打赏
  • 举报
回复
原来如此啊,学习的时候还没想到这些问题呢,呵呵,学习了
xwfde 2011-02-25
  • 打赏
  • 举报
回复
当然找到后肯定就break 了,没必要再遍历后面的。二楼经历丰富。
xwfde 2011-02-25
  • 打赏
  • 举报
回复
是要遍历一遍。遍历数目在几十万个级别上时遍历一遍时间是很短的,但你不会有那么多窗口。事实上windows对句柄个数做了限制(单进程约一万两千个,系统共约一万六千个),如果句柄数目超出那个数目windows将停止对程序提供服务分配更多的句柄。一个程序的窗口数目应该在一百个以内,或者稍多,遍历一遍消耗的是cpu 资源。可以做个测试,打开一个程序,最好是菜单和按钮数目多一点的,打开任务管理器,鼠标快速在菜单和按钮间滑动,看看程序cpu 使用率上升了多少。应该同数目多少成正比的。
关于windows 程序设计可以和我讨论QQ76149287
Jinhao 2011-02-25
  • 打赏
  • 举报
回复
不需要遍历所有.从最底层的窗口开始遍历,找到了之后,就只遍历该窗口中的子窗口.依次这样.
xwfde 2011-02-25
  • 打赏
  • 举报
回复
这个楼主很懒结帖率零…
内容概要:本研究聚焦于建筑群储能系统的鲁棒调度问题,提出了一种融合周期增强时序预测与帕累托多目标优化的协同调度策略。首先,通过引入周期性特征增强的预测模型(如周期感知LightGBM),对建筑群的源-荷不确定性进行精准解析,提升负荷与可再生能源出力的预测精度。在此基础上,构建以经济成本最低、碳排放最少和系统稳定性最高为目标的多目标优化模型,并采用NSGA-II等先进多目标进化算法求解,获得帕累托最优解集,实现低碳、经济、稳定的协同优化。该方法充分考虑了实际运行中的多重不确定性与多维目标冲突,提升了储能调度的鲁棒性与实用性,适用于复杂城市建筑群能源系统的智能化管理。; 适合人群:具备一定电力系统、优化算法或机器学习基础,从事能源互联网、综合能源系统、智能电网等相关领域研究的研发人员与高校研究生。; 使用场景及目标:①解决建筑群中光伏、负荷等波动性强带来的储能调度不确定性问题;②在经济性、低碳性与系统稳定性等多个相互制约的目标间寻求均衡优化方案;③为多主体、多目标的综合能源系统调度提供可复现的技术路径与代码参考。; 阅读建议:此资源结合了数据驱动预测与多目标优化两大核心技术,建议读者在学习过程中重点关注周期特征构造方法、多目标建模思路以及NSGA-II算法的应用细节,结合提供的Python代码进行实践调试,深入理解从预测到优化的全流程设计逻辑。

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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