initcommoncontrols_dialogboxparam_xorps

电脑杂谈  发布时间:2017-02-20 11:38:47  来源:网络整理

创建子控件的代码是Windows在CreateDialog/DialogBox里面自己实现的

你说的这两个是两个宏,前者是非模态对话框函数CreateDialogParam,后者是模态对话框DialogBoxParam。。现在我是想知道这些函数的内部过程。。如何创建子控件的。

你净纠结这些没用的细节,人家当然知道这个是宏了。dialogboxparam人家的意思只不过是想说CreateDialogParam或DialogBoxParam最终还是由系统实现的依次创建控件。dialogboxparam当函数返回时肯定所有控件都创建完毕了,但通常都是ShowWindows之后才显示。这两个函数分别又调用了CreateDialogParamIndirect或DialogBoxParamIndirect,然后Windows内部通过InternalCreateDialog或InternalDialogBox函数来实现,它实际上还是依次创建每个控件。至于这个是如何创建的,你要去研究CreateDialogParamIndirect或DialogBoxParamIndirect的参数,了解如何解析变长数据结构DLGTEMPLATE/DLGTEMPLATEEX、DLGITEMTEMPLATE/DLGITEMTEMPLATEEX结构体。

你说的这两个函数在跟踪过程中也看到了,问题是这两个函数并没有调用CreateWindowEx去创建窗口啊!在CreateWindowEx调用前各个窗口已经创建好了。如果说CreateThread是创建线程的唯一入口,那么是不是还存在其他创建窗口的入口?具我所知,微软对某一类行为最终总是会归结到对一个函数的调用上。就说创建线程吧,不论是多么复杂的创建过程,比如运行库中的__beginthreadex,最终还要调用CreateThread来创建线程。我只是想知道这个创建窗口的入口,到底是个什么样的函数


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-33494-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 郭会娟
        郭会娟

        看看岛礁建设中还存在什么不足之处

      • 王胜涛
        王胜涛

        再一个咱们国家的大型舰艇应该继续建造

      • 派迪
        派迪

        坏账多

      热点图片
      拼命载入中...