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


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

    对话框管理器的第一个主要部分,是它负责读取对话框模板并基于此模板创建一个对话框。
    你会看到一些形如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》

     

  • 相关阅读:
    如何安装西门子PLC设备
    make: /bin/nvcc: Command not found 解决找不到nvcc
    【uni-app】设置背景颜色相关
    Redis主从复制-Redis学习
    Mybatis 相关模块以及设计模式分析
    大数据技术基础实验十一:Hive实验——Hive分区
    vs2019快捷键注释不起作用
    【LeetCode】187. 重复的DNA序列
    go开发之个微机器人的二次开发
    史上最简SLAM零基础解读(8) - g2o(图优化)→示例代码讲解
  • 原文地址:https://blog.csdn.net/mmxida/article/details/125904773