初学Windows,有些概念不清,请大家指教,我下面的理解对不对?有的程序先是注册窗口类,然后建立窗口作为程序的界面,而有的程序干脆用一个模态对话框作为程序界面。省去了注册窗口类和创建窗口的过程。这两种情况除了一些小的差别以外,比如你用对话框作为程序界面的话,你得先在资源中创建一个对话框,好象对话框是不能用CreateWindowEx创建出来的对吧?另外,对话框默认背景颜色是灰的。模态对话框是由系统为它建立一个消息循环,不用用户自己费心去建立消息循环了。除了这些小的差别以外,我觉得最大的差别在于:用普通的窗口作为界面,一切事情都可以自己来做,你想往窗口中写入一些东西,对不起,不能写入就不管了,还得在WM_PAINT中负责刷新,以防止被其他窗口覆盖后内容消失。但是,这同时也带来了一些好处:就是可以实现任意的功能,比如你可以在窗口中拖动一个位图,你自己负责刷新它。但是对话框好象就不是这样,对话框是无法处理WM_PAINT消息的,是吗?对话框中显示的内容,全都是控件,哪怕是一个线条,而控件就是一个窗口,所以对话框中显示的任何内容都是子窗口(而不象普通窗口那样可以显示任意内容而不一定非要是子窗口)。那么谁来负责刷新呢?比如被别的窗口覆盖过了,谁来负责恢复它的内容?这也不是对话框管理器负责的。而是各个控件自己负责的,每个控件都是一个窗口,有自己的窗口消息处理程序,它们负责恢复、刷新和维持控件的显示。对话框中显示内容是无法使用象TextOut这样的函数的,因为虽然可以写,但你却无法维持住写的内容。虽然它有时候显得很方便,比如你在资源的对话框中设置一个线条,它就一直在那里,不需要你维护它。但是它也带来了一些不便:比如你想拖动一个位图,就办不到了。总之,对话框和普通窗口比起来,操作起来更方便,但功能没有普通窗口强大,而是有种种限制。我的理解对吗?
============
你的想法不对,对话框和普通窗口差别并不是很大,它也有窗口类,只不过系统已经注册好了,普通窗口上也可以放控件
对话框上同样也可以用WM_PAINT消息,你完全可以不用控件显示内容,就直接显示在对话框也可以。