对话框管理器第一章:先热热身

news/2025/2/26 13:21:33

我认为大家关于对话框管理器的很多困惑,来自于没有真正地理解它的底层工作原理。这其实也没那么糟。在接下来的几篇文章中,我将首先描述对话框是如何创建的,然后我会讲解对话框消息循环,最后,我会再介绍一些有关导航相关的主题。
这一系列将会包含九篇文章,请做好,扶稳了。

对话框管理器的第一个主要部分,是它负责读取对话框模板并基于此模板创建一个对话框。
你会看到一些形如CreateDialogXxx的函数,它们用来创建对话框。而它们只是在底层调用CreateDialogIndirectParam这个函数。在这些函数中,有些直接是通过宏来定义的,例如CreateDialog只是简单地调用CreateDialogParam,并将一个参数设置为0.
类似的,CreateDialogIndirect也只是将一个参数设置为0并调用CreateDialogIndirectParam。

我们先来看看一个比较简单的包装器函数,如下图所示:

 

在上面的代码中,CreateDialogParam只是使用hinst/pszTemplate来定位对话框模板,然后使用此模板来调用CreateDialogIndirectParam,以创建对应的对话框。

好了,今天就先到这里,不复杂吧?
在下一篇文章中,我将会从一个模板中创建对话框,请小期待一下。

总结

地球人都知道,我一向不喜欢弹出式对话框,但是:人在江湖,身不由己。
TopomelBox也还是用到了一些对话框,这些对话框仅用于给使用者一些关键性提示。
要完全避免对话框的使用,我看,挺难的。但我的原则还是:对话框能不用,咱就不用。
没事瞎干扰用户干啥。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《The dialog manager, part 1: Warm-ups》

 


http://www.niftyadmin.cn/n/3242403.html

相关文章

.netframework游戏编程入门——模拟魔兽学院永远的羁绊

相信有很多和我一样摸索着编游戏的自学者,自学是辛苦的,一没明确的引导,二没正确的工具,我就谈一下自己的经验,也许可以让你少走一点弯路。3D 的先不谈,2D作为基础还是有必要研究,然后把地图模型一换(换成三维骨骼模型)——呵呵,好像没那么简单吧。 先在已…

城堡幻想曲圣魔大战3(Castle Fantisia)新艾伦希亚战记(即重做版) 新增剧情简介

人物表情更自然了,新增人物丽薇,添加了语音!时间以周计算 (城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列) 我还纪录一些经典…

对话框管理器第二章:创建框架窗口

对话框模板包含了对话框外观的描述,所以对话框管理器只是简单地遍历模板并按照模板的描述来创建对话框。这个过程十分简单和直接,对话框管理器没有太多自己的决策空间,它只是按照模板说的做而已。 为了简单起见,我会假设这里说的对…

城堡幻想曲圣魔大战3(Castle Fantisia)艾伦希亚战记和重做版下载安装汉化

城堡幻想曲圣魔大战3(Castle Fantisia)艾伦希亚战记(艾伦西亚战记)和重做版是 galgame,我非常推荐。 (城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战…

对话框管理器第三章:创建控件

和上一篇创建框架窗口相比,创建控件的工作要轻松很多,信不信由你。 在对话框模板中定义的每一个控件,其对应的子窗口将会被创建。控件的大小和位置在模板中是以DLU为单位来描述的,所以,理所当然的,我们需要…

我对HGAME的看法(GalGame)

堕落了,居然下载18禁的GalGame顺便谈谈我对 HGAME的看法HGAME,我也局限于studio e go的游戏更准确地说是18禁的GalGame(美少女游戏) 看看网上:切随便找个 GAL 游戏美女都多的要不成 GAL全是H的 日本游戏没H的少死了 在日本大家都…

Visual Studio新功能出炉:低优先级构建

近日,C开发团队很高兴地宣布,一项C社区高呼的功能:低优先级构建,已经成功开发完成。借助我们合作伙伴团队的反馈和协作,你现在可以在 Visual Studio 中启动低优先级构建。 这将确保MSBuild节点以较低优先级生成&#x…