BngThea 发表于 2017-7-5 15:30:28

《Windows SDK》003 窗口窗口

本帖最后由 BngThea 于 2017-7-15 09:41 编辑

前面两节内容较少,这节感觉内容好多,花了好多时间才学完{:10_266:}

一 核心知识点
* 窗口创建流程
   1 定义基本变量:窗口类标题、窗口句柄、消息对象
   2 定义并初始化窗口类对象wndclass
   3 RegisterClass()注册wndclass
   4 CreateWindow()创建窗口并将其句柄赋给hwnd
   5 ShowWindow() 和 UpdateWindow()显示并更新窗口
   6 消息更新与循环

* WNDCLASS类
   成员列表:
//初始化窗口类型对象的参数:
      wndclass.style = CS_HREDRAW | CS_VREDRAW; //定义风格:水平及竖直方向重绘
      wndclass.lpfnWndProc = WndProc;//定义回调函数,上述声明的WndProc
      wndclass.cbClsExtra = 0; //额外空间,暂无用
      wndclass.cbWndExtra = 0;//额外空间,暂无用
      wndclass.hInstance = hInstance;//定义当前的实例,用WinMain中的第一个参数
      wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//定义图标样式
      wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//定义鼠标样式,为普通箭头
      wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //定义背景颜色,为白色
      wndclass.lpszMenuName = NULL;//定义菜单,暂为空
      wndclass.lpszClassName = szMyClass; //定义窗口类的标题名称,用基本量szMyCLass

目前关注点在 style成员,同时注意回调函数必须使用带CALLBACK的函数

* CreateWindow()函数
参数列表:
//创建窗口,并将句柄赋给其hwnd
      hwnd = CreateWindow(szMyClass, //窗口类的名称
                              TEXT("Windows SDK"), //窗口的标题
                              WS_OVERLAPPEDWINDOW, //窗口的风格
                              CW_USEDEFAULT,       //初始x坐标
                              CW_USEDEFAULT,       //初始y坐标
                              CW_USEDEFAULT,       //初始x尺寸
                              CW_USEDEFAULT,       //初始y尺寸
                              NULL,                //父窗口的句柄,为空
                              NULL,                //菜单的句柄,为空
                              hInstance,         //该窗口用的实例句柄
                              NULL);               //创建时的参数,为空
目前关注的是第三个参数,该参数可选的预定义值非常多,很多窗口自定义功能通过它实现

二 其他
* 对模板自己动手码上五遍,基本能对整个流程有个大致的把握
* 模板中的其他函数还未进行讲解,后续应该会有详细讲解
* Windows SDK编程中无论函数,变量基本都是由单词构成,理解每个单词的含义可能会很好的帮助我们快速深入的进行学习
页: [1]
查看完整版本: 《Windows SDK》003 窗口窗口