对话框作为主窗口?

通常使用一个对话框作为主窗口? 所以没有通过RegisterClassEx注册任何用户类? 我可以通过CreateWindow()做我所做的一切吗? 为什么我应该通过CreateWindow()创build控件,如button,编辑框等,而不是仅仅创build一个对话框,并将其用作主窗口?

我也想知道对话框和窗口之间的主要区别,为什么使用第一个而不是第二个。

谢谢

通常使用一个对话框作为主窗口?

是的,这很常见。

所以没有通过RegisterClassEx注册任何用户类?

对话框通常是预定义的窗口类,所以通常不需要注册。

我也想知道对话框和窗口之间的主要区别,为什么使用第一个而不是第二个。

那么,两个很大的区别是,你不能调整对话框的大小,它没有最小化或最大化按钮(默认情况下,但有解决方法)。 请记住名称, 对话框 。 换句话说,它们用于与用户进行对话 (接收输入并向用户显示消息)。 从某种意义上来说,它们就像任何其他窗口一样,在CreateWindowxx之下,等等被调用,等等。但是,它们是有些预定义的窗口,可以很快地完成,而且你可以对它们做些什么限制。

此外,对话框使用对话框过程而不是窗口过程,它会为您执行一些默认处理,例如初始化某些控件等。

是的,应用程序可以是基于对话框的。 如果你使用VisualStudio和MFC,甚至还有一个向导。

在VS2010中,创建新项目> MFC应用程序。 在“应用程序类型”中选择“ 基于对话框 ”。 点击向导的其余部分,即可参加比赛。

基于对话框的应用程序在架构上比其他设计(如Document / View)简单得多。 因此,简单的事情很容易“迅速”出来,但是当您尝试做更复杂的事情时,设计的局限性会变得很明显。 您可能最终复制了基于对话框的应用程序中的大部分Doc / View体系结构,以便构建基于生产质量的基于对话框的应用程序。 在那种情况下,你真的救了自己什么吗?

一个对话框就像一个窗口一样,像按钮一样的各种控件实际上只是一个窗口。 您可以将对话视为一种具有许多额外功能的窗口,以支持用于对话的各种事物。

有两种类型的对话框,模式显示,并期望您使用它们,然后解雇他们,非模态显示,但不捕获和保持输入焦点,直到他们被解雇。 您可以看到这两种类型的应用程序,其中使用模态对话框来显示错误,或者要求用户进行一些设置,而非模态则用作一种保持显示的工具箱,当您需要时,单击在其上执行某些操作,而其他时间则在应用程序中使用其他窗口。

通常情况下,对话框没有菜单栏,而是可以通过标签或其他类型的演示文稿使所有的控件可见或易于访问。 Visual Studio和其他IDE都有对话框设计器,允许将各种控件与向导一起放置,以便将控件绑定到类和类成员上。

这引起了对话框和窗口之间的主要区别。 一个窗口是一个空的页面,并与页面做事情需要更多的工作。 对话框中的工具使得设计变得简单,但是工具箱也会大大限制您的设计。

如果你有一个专注于基本上允许用户指定某些设置然后执行一些任务的应用程序,那么一个对话就能很好地工作。 如果你有一些需要更复杂的用户交互的东西,一个应用程序窗口作为你的所有其他对话框和控件将被管理和操纵的基础将是更加必要的。