Windows窗口及对话框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/brunomarss/article/details/50688859
1、Windows窗口介绍
    
     在Windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理窗口,这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。而窗口之间的关系有两种:owner-owned(拥有-被拥有关系)、
parent-child(父-子关系)。
     如果单纯说明窗口的类型,那么Windows中定义了3种窗口类型:
     CHILD           :子窗口
     POPUP          :弹出窗口,适合作为主窗口。
     OVERLAPPED:重叠式窗口,适合作为主窗口,默认具有标题栏等属性。
     两种窗口风格:
     WS_CLIPSIBLING    :适用于同一级子窗口之间,表示当某设置了该风格的子窗口需要重绘时,被遮挡区域不进行重绘;
     WS_CLIPCHILDREN:适用于父窗口和子窗口之间,表示当某设置了该风格的父窗口需要重绘时,被遮挡区域不进行重绘;
在Windows窗口中,overlapped窗口和popup窗口肯定具有WS_CLIPSIBLING风格,即使在代码中人为去掉该风格,Windows还是会自动添加上。

2、作为子窗口的控件

     控件属于子窗口,是系统已经定义好的窗口类,不需要进行注册,也不需要添加消息处理函数。只需在主窗口得到WM_CREATE消息时,建立子窗口即可。
     控件的创建方式:
     a.随对话框资源一同创建,属于可视化编程方式可以方便地设置各个控件的属性;
     b.CreateWindow创建,代码控制,创建的位置更为精准;

     所有控件都有且只有一个ID,通过查看资源的属性即可看到操作控件所使用的控件句柄可由GetDigItem函数得到。此时的父窗口更像一个消息中转站,子控件发生的任何行为都会给父窗口发送消息,父窗口得到消息之后将根据消息的内容,或是给其他子控件发送控制消息,亦或其他操作。
     一般情况下,我们都是直接将控件拖拽到对话框中在属性栏中设置ID和标题即可,常用控件主要有Button/CheckBox/EditControl/ComboBox/StaticText/Picture Control/Process Control/List Control/Table Control等。

3、对话框

     用途:
     a.发送消息:应用程序向用户发送消息时使用,常见有警告消息框,提示消息框等;
     b.接收消息:应用程序希望得到用户输入时使用;
     c.提供消息:应用程序向用户提供信息时使用;

     对话框与一般应用程序子窗口比较:
     a.创建形式:在资源描述文件定义对话框模板完成创建;
     b.独立的消息处理函数:应用程序在消息循环中判断消息队列中的消息,若为对话框消息,则将消息发往对话框处理函数进行处理;
     c.包含多种控件:对话框中根据需要包含各式形状和功能的控件,应用程序通过控件完成与用户之间的对话框交互。

     对话框分类:
     a.模态对话框:要求用户必须结束该对话框之后才可切换到其他窗口,即该对话框与同一应用程序中的其他窗口互锁;
                           使用DialogBox函数创建,自带消息循环。
     b.非模态对话框:允许在结束该对话框之前切换到其他窗口操作;使用CreateDialog函数创建,需编写消息循环。

     

猜你喜欢

转载自blog.csdn.net/brunomarss/article/details/50688859