C++ DialogBox或CreateWindow的正确做法是什么
亲爱的有经验的用户您好 我在windows中编程已经有一段时间了,我一直在问这样一个问题:创建用户界面时,正确的做法是什么? 它对资源脚本和调用对话框中的UI是否有影响 或者,首先创建WNDCLASS结构声明字段、RegisterClass(&wc)并使用CreateWindow是一种更为繁琐的方法,最终它的功能是相同的,只是DialogBox的初始化更容易,并且您在类上失去了abit控制 我想你会问这个应用程序的目的是什么,当然我可以说它是一个皮肤应用程序(然后我会使用CreateWindow),如果它是一个简单的计算器应用程序,我会选择Dialogbox 但是职业选手的目的是什么 请继续关注win32领域,因为我不会讨论是否在这些应用程序中使用QT或Java,我的立场是它们会增加很多不必要的开销,java、JRE和QT、额外的DLL和.NET所有这些都要求用户安装这些文件,如果没有,则要求用户下载所有这些文件。这些文件的大小大于20 mb。我看不出这有什么道理C++ DialogBox或CreateWindow的正确做法是什么,c++,c,winapi,C++,C,Winapi,亲爱的有经验的用户您好 我在windows中编程已经有一段时间了,我一直在问这样一个问题:创建用户界面时,正确的做法是什么? 它对资源脚本和调用对话框中的UI是否有影响 或者,首先创建WNDCLASS结构声明字段、RegisterClass(&wc)并使用CreateWindow是一种更为繁琐的方法,最终它的功能是相同的,只是DialogBox的初始化更容易,并且您在类上失去了abit控制 我想你会问这个应用程序的目的是什么,当然我可以说它是一个皮肤应用程序(然后我会使用CreateWindow
感谢您的回答和花时间阅读我的漫谈您可以将DialogBox视为一个由几个逻辑部分组成的复合体:
在我的实践中,对于非常小的实用程序应用程序,我只使用过几次DialogBox。使用对话框作为应用程序的主窗口非常方便,以至于Visual Studio在创建新项目时将其作为一种选择。您可以使用资源编辑器布局窗口,创建对话框时将自动创建所有子窗口 您甚至可以通过响应对话框的WM_PAINT消息来创建自己的自定义背景
对话框的默认行为也很有用,例如通过响应TAB键来更改控件焦点。根据我的经验,使用对话框作为主窗口应用程序一开始似乎很容易,但随后会变得非常不舒服,特别是如果您使用
DialogBox()
(而不是CreateDialog())进行对话
:
LRESULT
,而是一个BOOL
,它在除极少数仅对话框消息外的所有消息中几乎都是无用的
b、 一些重要消息不会发送到对话框过程,尤其是WM_CREATEFindWindow
将成为PITA我并不是说开发基于对话框的应用程序毫无意义;只是说如果有更好的方法,尤其是对于非琐碎的方法,你应该三思。正确的做法取决于你在做什么。具体的客观问题更适合问答形式。在你的博客上继续漫谈和沉思:任何一种方法都是正确的比另一个更“正确”。为了便于开发,我更喜欢对话框。我想你从来没有遇到过VCL……谢谢@Luke。当我们有很多来自不同环境的程序员时,我认为这是一个恰当的问题。嵌套的消息令人痛苦:我发现即使是那些在WinAPI中“有经验”的人,也很少有人