002WINDOW窗口相关点 控件基础

WINDOW窗口相关点
风格:Windows窗口风格三个典型风格:重叠窗口,弹出窗口,子窗口   
分别是:WS_OVERLAPPED    WS_POPUP    WS_CHILD
 
控件基础
控件时windows系统内置的窗口类,他们时某一个窗口的子窗口,所以创建他们的风格必须是WS_CHILD
 
 
  • 控件消息:
 
        分为两大类
控件控制消息
自己的专属消息,我们只需要向控件发送这些消息就能控制他们的行为,不需要关注他们怎么被处理的
...问题
 
控件通知消息
子控件通知父窗口的一些事件,常见的由子控件被点击,子空间需要重绘
这里分为两大类
WM_COMMAND: 标准控件的通知消息,标准控件的通知消息比较简单,用它即可
WM_NOTIFY:        附加通用控件通常会用此消息给父窗口发通知
 
这里说明下回调函数的wParam参数值
我们通常用两个变量去接收wParam的值,具体原因是因为wParam是16位的二进制数,高位保存的是控件通知码,即控件的句柄
而低位通常保存控件的ID,这里ID就尤为重要
具体代码:
                WORD wHigh    =    HIWORD(wParam);        //控件的窗口句柄
                WORD wLow     =    LOWORD(wParam);      //控件ID      
 
  • 对话框
模态对话框和非模态对话框
模态窗口:用DialogBox()函数创建出来,自带消息循环,模态对话框可以理解为比较死板,要等这个窗口运行完毕后,父窗口才能被控制
非模态窗口:用CreateWindow来创建,需要自己写一个消息循环,只在退出循环时,要用到EndDialog来退出内部消息循环

<wiz_code_mirror>

 
 
 
 
 
            //新加非模态对话框
/*
            hWnd = CreateDialog(gHIND,
                MAKEINTRESOURCE(winid1),
                NULL,
                (DLGPROC)wProc);
            ShowWindow(hWnd, SW_SHOW);
            UpdateWindow(hWnd);*/
            //加模态对话框
            DialogBox(gHIND, MAKEINTRESOURCE(winid1), NULL, (DLGPROC)wProc);
 
 
EndDiaolog();                关闭模态对话框,调用函数中关闭对话框,关闭后会有一个返回值给父窗口
DestroyWindow();          关闭非模态对话框,退出消息循环,结束进程,但不等于退出运行
PostQuitMessage();       退出运行,关闭程序
 
 
 
  • 控件的使用
 
    控件在使用之前,我们先看看他的创建,他的创建可以是CreateWindow创建出来的,也可以是我们用对话框资源一个一个创建出来,前者属于代码控制,更注重细节。后者是可视化的编程方式,能方便的控制各个控件的属性
    我们如何去使用控件,首先要明白,我们使用的是哪一个控件,每个控件的句柄每次打开程序都和上次不同,但是ID是不变的,所以我们只能去控制它的ID,而去使用它    通过ID找句柄函数        GetDigItem(父窗口句柄,控件ID);
 
控件消息的接受过程:控件消息每次是由主窗口接受到,所以我们应该在父窗口的回调函数里面去处理控件消息,而控件消息主要分两种类型,
WM_COMMAND,  WM_NOIFY
 
每个消息的消息参数是不同的,拿WM_COMMADN来举例
消息来源:WM_COMMAND
接受单位:控件
消息内容参数:    WPARAM(高位):响应Code
                             WPARAM(低位):控件ID
                             LPARAM:              控件句柄
控件的使用套路:
                        根据ID找句柄,找到句柄发消息    具体怎么发,要看是什么控件
 
 
  • 通用控件
通用控件通知消息的方式是WM_NOTIFY,创建的方式可以代码创建,也可以拖拽资源工具栏
动态创建通用控件的步骤:
1.包含<CommCtrl.h>头文件
2.载入ComCtrl132.lib
3.调用InitCommonControls初始化通用控件
4.使用CreateWindowEx函数创建通用控件
 
对话框资源直接拖拽直接使用即可
 
WM_NOTIFY消息:
    他被创造出来的原因:我们使用控件的要求WM_COMMAND已经无法满足我们,所以WM_NOTIFY消息存放的信息比较多
基本结构为
        WPARAM:    发生WM_NOTIFY消息的控件ID
        LPARAM:      NMHDR指针
现在我们要的一些附加信息都存放到了NMHDR的一个结构体里面,该结构体通过LPARAM通知到父窗口
 
 
   
原文地址:https://www.cnblogs.com/Tempt/p/9987780.html