MFC对话框子控件

来源:百度知道 编辑:UC知道 时间:2024/05/26 09:10:27
1.MFC程序中,用对话框模板或是代码中直接创建的控件,应用程序是如何管理的,比如说控件绘制,显示等?
2.还有点不明白的是应用程序如何根据对话框模板创建出其上面的控件呢?

好象是在相应WM_PAINT消息时候做的处理,但没找到相关MFC源代码
--------------------------------------------
--------------------------------------------
哎,2009-7-8 10:03 继续等待完美回答。。。。。。对MFC框架实现有了解的应该很容易的。

创建:Create——创建控件等
显示:ShowWindow——显示或隐藏一个控件
定位:SetWindowPos——设置位置等窗口属性

创建控件的时间什么时候都成啊。你如果要是用对话框模板,不是动态创建的话,也可以把控件从工具板上面直接拖到你的对话框上。

1.1管理由对话框管理。
1.2如果需要重画控件,那么你只能够写一个控件,并且在对话框中使用该控件。

2.对话框只重画自己的客户区域,而控件被失效之后会自己重画,对话框需要做的只是通知控件。

这些内容你可以参照一下 《MFC windows程序设计》这本书,内容十分详细,我们公司学习就是使用这本书,四五百页,大概两个星期搞定吧。需要的话我有电子书,实际上网上到处都是,找不到了再给我发个消息吧~~

1.模板方式,是在rc文件中定义的二进制形式的描述,然后exe/dll运行的时候装入这些描述信息,根据描述信息创建相应的窗口。这些窗口句柄都是系统资源,应用程序是不管理的,应用程序只负责消息的调动收发响应。每一个控件都是一个窗口,他的绘制工作是他自己完成的,跟父窗口(对话框没有关系),对话框只负责初始化时候对窗口的定位和尺寸进行调整。
对话框也是窗口,他的wm_paint消息函数,也只负责自己的绘制,当然客户区有子控件,它是不考虑的,绘制完成后在向各个子窗口发送wm_paint消息,由他们自身绘制。这样就看到对话框的显示效果了。
2.应用程序根据rc创建,这个你不用考虑,资源文件编译后以资源段的方式存在PE文件中,这个格式也不算是完全保密。通过FindResource / LoadResource/LockResource 等函数就可以装入资源,这其中RT_DIALOG 类型的资源就是描述对话框数据和其子窗口数据的,数据的详细组织方式就完全不用考虑了,你只要看到.rc文件的描述就行了
这部分源码都是被sdk函数封装的,微软怎么可能透露。你只要了解执行流程就行了

你是不是想知道控件的产生?其实,应用程序是根据rc文件产生控件的,你用资源编辑器所做的一切,都会产生一个rc文件,如果你对rc文件足够的熟悉,你可以直接写rc文件而不用那个编辑界面,程序运行时候照