MFC创建窗口(控件)总结

        好久没来CSDN发总结的文了~这段时间一直项目,是一个比较老的MFC框架下的项目。在已有的主程序框架下,使用OLE的方式,即ActiveX控件实现各项功能。我的任务是在已有的基于OLE的基类下派生的子类中实现平面快速绘图及3D绘图显示的效果。可以说,任务看起来不是很难,主要是在老旧的框架下,多层派生中实现功能,总是让人纠结~~~~~~~~~呃,扯远了,今天先简单讲一下碰到的MFC问题,之后会系统总结一些OpenGL的原理及使用。

        首先总结一下MFC窗口类型,有3种最基本的窗口类型:重叠窗口、弹出窗口和子窗口。
重叠窗口(overlapped window),具有应用程序主窗口的全部特点。它的非客户区包括一个可伸缩的框架、菜单条、标题栏和最小化、最大化按钮。
弹出窗口(popup window),具有消息框或者对话框的全部特点。它的非客户区包括一个固定大小的框架和一个标题栏。
子窗口(child window),具有类似按钮控件的全部特点。它没有非客户区,窗口的处理过程负责绘制窗口的每个部分。


重叠窗口
  一个重叠窗口是顶层窗口有一个标题栏,边框和客户区,它的目的是作为一个应用程序的主窗口。它也可以有一个窗口菜单,最小化和最大化按钮和滚动条。重叠的窗口作为主窗口使用通常包括所有这些组件。
  通过CreateWindowEx函数中指定的WS_OVERLAPPED或WS_OVERLAPPEDWINDOW风格,一种应用程序创建一个重叠的窗口。如果使用WS_OVERLAPPED风格,窗口有一个标题栏和边框。如果使用WS_OVERLAPPEDWINDOW风格,窗口有一个标题栏,边框大小,窗口菜单,最小化和最大化按钮。


弹出窗口
  弹出窗口是顶级窗口,并连接到桌面窗口的子窗口的列表。应用程序通常使用对话框弹出窗口。弹出窗口不需要有标题,而重叠的窗口必须有标题。当一个弹出窗口没有标题,它可以创建无边框。弹出窗口可能拥有其他顶级窗口,或由其他顶级窗口所拥有,或者前面两种情况同时存在。即使没有指定,所有弹出窗口都具有WS_CLIPSIBLINGS风格。如果窗口位置或大小的参数使用了CW_USEDEFAULT,弹出窗口将不能被创建。使用了CW_USEDEFAULT参数的弹出窗口会存在,但位置或大小可能出现错误。重叠的窗口通常是保留给应用程序的主窗口,被称为主窗口或框架窗口。 弹出窗口通常用于对话框和消息框。
  一个弹出窗口,可以看作是一个特殊类型的重叠窗口——对话框,消息框以及其他外部应用程序的主窗口中出现的临时窗口。弹出窗口可以选择标题栏,去掉这一点,弹出窗口跟重叠窗口的WS_OVERLAPPED风格相同。
    创建一个通过指定CreateWindowEx WS_POPUP风格的弹出窗口。要包含一个标题栏,指定WS_CAPTION样式。使用WS_POPUPWINDOW风格创建一个弹出窗口,具有边框和窗口菜单。该WS_CAPTION样式必须结合WS_POPUPWINDOW风格使窗口菜单中可见。


子窗口
  子窗口必须有一个父窗口,并只限于父窗口的客户区。这是子窗口跟重叠窗口和弹出窗口的主要区别。子窗口的父窗口可以是顶层窗口或其他子窗口。子窗口的位置,是从他们的父窗口的左上角开始计算,而不是从屏幕左上角。 
  应用程序可以为一个子窗口创建一个标题栏,窗口菜单,最小化和最大化按钮,边框,滚动窗,但不能创建菜单。如果应用程序指定一个菜单句柄,或者使用它注册子窗口类、创建子窗口的时候,菜单句柄将被忽略。  

你可能感兴趣的:(MFC创建窗口(控件)总结)