它拥有所有子窗口都被销毁. 3.所有者窗口与被所有者窗口的关系 被所有的窗口永远显示在所有者窗口之上

时间:2021-12-12 03:02:20

标签:Windows   MFC   

一、创建过程 动静循环

1.WinMain首先挪用Api函数RegisterClass注册一个窗口类,这个类界说

了窗口重要属性,如窗口过程地点, 默认配景色, 图标. 通过WNDCLASS布局字段

来界说,  措施生成一个窗口时,必需制定窗口类, 在类被使用之前,必需先对其进行注册,

这就是为什么RegisterClass在措施的开始即被挪用的原因,

2.一旦WNDCLASS被注册,WinMain讲挪用最重要的CreateWindow函数生成应用措施

3.一个MFC措施你看不到WinMain函数,他也不挪用RegisterClass或CreateWIndow

由于生成没有WS_VISIBLE所以在CreateWIndow之后要挪用ShowWindow

它是窗口可见,并确保WM_PAINT动静措置惩罚惩罚措施立刻执行。

4.接下来就是动静循环,为了检索并调理动静,WinMain执行一个简单的重复挪用

GetMessage,,TranslateMessage,和DispatchMessage这3个API讲函数的while循环语句

GetMessage查抄动静行列队伍,如果某个动静是有效的,则讲它从行列队伍删除并复制到msg

否则GetMessage将勾留到动静行列队伍上知道动静有效, msg是MSG的一个实例

其知道保包罗相关的动静参数,

例如动静ID和动静被安排在行列队伍中的时间,  TranslateMessage函数将一个指示字符键的键盘

动静转换成容易使用的WM_CHAR动静,DispatchMessage函数则讲动静发送给窗口过程,

5.动静循环一直循环到GetMessage函数返回0值时结束, 这个只有WM_QUIT动静从动静行列队伍中

被检索到时才产生,.这是WinMain结束,措施终止.

6.由DispatchMessage函数调理的动静将出产对窗口过程WinProc的挪用, 其他没有被措置惩罚惩罚

的动静通报给了DefWindowProc函数进行默认措置惩罚惩罚,

7.窗口类是Windows系统的数据布局, 窗口类包罗窗口重要信息,如窗口气势派头,窗口动静措置惩罚惩罚WndProc

窗口的光标等




二、应用措施东西

MFC应用核心是基于CWinApp类东西,CWinApp供给了动静循环并来检索动静,

并将动静调理给应用措施窗口

2.笼罩ExitInstance在应用措施终止后挪用,是释放资源的完美处所,笼罩要确保挪用基类






三、框架窗口东西

1.MFC的CWnd类机器派生类为窗口或应用措施创建的窗口供给面向东西接口

窗口类是从CMainWindow是从CFrameWnd类派生的,后者又是从CWnd派生

CFrameWnd仿照框窗口的行为,

2.客户区和非客户区

窗口的非客户区包罗标题栏.菜单栏,窗口边框

客户区指除非客户区之外的区域,都是客户区

3.窗口样式 是影响窗口外不雅观和行为的一组属性调集

给与WS为前缀的宏界说

WS_BORDER创建有边框的窗口

WS_CAPTION创建有标题栏的窗口

WS_CHILD创建一个子窗口 等等...

4.窗口扩展样  一般用WS_EX_为前缀的宏界说

WS_EX_CLIENTEDGE指明窗口具有3D外不雅观

WS_EX_APPWINDOW当窗口可见时,将窗口安排在任务栏

WS_EX_CONTROLPARENT允许用户TAB键遍历子窗口 ...



四、窗口的Z-Order与桌面窗口

窗口Z-Order的观点

屏幕一般X轴Y轴暗示平面位置,而以Z轴暗示前后位置,X轴从左向右

Z轴从屏幕内指向屏幕外,Z-Order值暗示窗口的前后挨次,Z-Order值越大,在屏幕显示越靠近用户

2.桌面窗口

桌面窗口就是系统桌面对应的窗口,桌面窗口与其它的关系是,桌面窗口在最底层,其它窗口

在它之上,所有它的Z-Order值最小。



五、父窗口和所有者窗口

父窗口与所有者窗口的名次

窗口之间有两种关系, 一种是owner-owner关系 和 parent-child关系

前者是所有/被所有关系, 后者是父/子关系, owner称为所有窗口,parent为父窗口


2.父窗口与子窗口的关系

子窗口是嵌在父窗口上面的,就像是钉在父窗口上面的觉得,子窗口显示区域不能赶过

父窗口的显示区域,超过的不显示,当父窗口被隐藏时,它的所有子窗口也被隐藏,

当父窗口销毁时,它拥有所有子窗口都被销毁.


3.所有者窗口与被所有者窗口的关系

被所有的窗口永远显示在所有者窗口之上,当所有者窗口最小化时,被所有窗口会自动隐藏

当所有窗口销毁时,被所有的窗口就会被销毁, 当所有者窗口移动时,被所有的窗口不一起移动,

被所有窗口可以在所有者窗口区域之外的位置显示.






Windows核心编程(1)

标签:Windows   MFC