zoukankan      html  css  js  c++  java
  • VC++学习笔记之创建窗口

    1、设计窗口类。
              一看到“设计”两个字,大家肯定就会想入非非。窗口的创建过程类似于汽车的制造过程。我们在生产一个型号的汽车之前,首先要对该型号的汽车进行设计,画出结构,设计零部件,起一个名字“奥迪A8”。完成设计后就可以按照这个型号生产汽车了。
    当然,在我们设计窗口时,不像设计汽车那么复杂,因为Windows 已经为我们定义好了一个窗口的基本属性,我们只要进行属性设置就可以了。要达到做填空题的效果,只能通过结构体来完成,窗口的特征就是由WNDCLASS结构体来定义的。WNDCLASS结构
    体的定义如下:
            typedef struct _WNDCLASS{
                     UINT style;   //设置窗口的样式
                     WNDPROC   lpfnWndProc;  //“lpfnWndProc”是一个函数指针,指向窗口过程函数(一个回调函数)。
                                                                        /*在这里写一个小插曲,解释一下回调函数和窗口过程函数。回调函数的实现机制:它不是由该函数的实现方直接调用(只是提供),而是在特定的事件或条件发生时由“另外一方”调用的,用于对该事件或条件进行响应。(1)定义函数    (2)提供函数的一方在初始化的时候,将回调函数的函数指针注册给调用者(通常是操作系统)。   (3)当特定的事件或是条件发生时,调用者调用函数。       窗口过程函数被调用的过程:(1)将本函数地址赋值给“lpfnWndProc”成员变量。(2)调用“RegsiterClass(&wndclass)”注册窗口类,让系统获得我们编写的窗口过程函数的地址。(3)当应用程序接收到某一窗口的消息时,调用DispatchMessage(&msg)将消息回传给系统。然后系统调用窗口过程函数对消息进行处理。*/
                     int cbClsExtra;  //设置类附加内存空间,被窗口类的所有窗口所共享。
                     int cbWndExtra; //设置窗口附加内存,用于存储窗口特有的数据。
                     HANDLE hInstance;   //指定包含窗口过程的“主程序”的实例句柄
                     HICON hIcon;  //指定窗口类的图标句柄。可以使用LoadIcon函数来加载一个图标资源,返回系统分配给该图标的句柄。
                     HCURSOR hCursor;   //指定窗口类的光标句柄。可以调用LoadCursor函数来加载一个光标资源,返回系统分配该光标的句柄。
                     HBBUSH hbrBackground;   //指定窗口类的背景画刷句柄。可以调用GetStockObject函数来得到系统的标准画刷。
                     LPCTSTR  lpszMenuName;  //指定菜单资源。
                     LPCTSSTR  lpsz ClassName;  //指定窗口类的名字,就像新设计了一型号的汽车,给该型号的汽车起个名字。
            }   WNDCLASS;
           
           2、注册窗口类
           就像设计完汽车后,国家有关部门审批通过之后,该种类型的汽车才可以生产。同样地,设计完窗口类(WNDCLASS)后,调用RegisterClass函数对其进行注册,然后才可以创建该类型的窗口。注册函数原型如下:
           ATOM RegisterClass(CONST  WNDCLASS  *lpWndClass);

           3、创建窗口
           用CreateWindow函数产生这种类型的窗口。

           4、显示及更新窗口
           (1)调用ShowWindow函数来显示窗口。
                 BOOL ShowWindow(
                       HWND hWnd ,  //窗口句柄
                       int nCmdShow   //窗口显示状态
                 );
            (2)调用ShowWindow函数来刷新窗口
                 BOOL  UpdateWindow(
                       HWND hWnd  //创建好的窗体
                  );

    朋友,如果您有什么真知灼见,可以加“新浪微博”/MSN哦,starrycheng@live.com,我们大家一起讨论,一起研究。

    最后,帮忙加一分吧,想整个空间系统。

  • 相关阅读:
    15. DML, DDL, LOGON 触发器
    5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响
    4. 跟踪标记 (Trace Flag) 610 对索引组织表(IOT)最小化日志
    14. 类似正则表达式的字符处理问题
    01. SELECT显示和PRINT打印超长的字符
    3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息
    2. 跟踪标记 (Trace Flag) 3604, 3605 输出DBCC命令结果
    1. 跟踪标记 (Trace Flag) 1117, 1118 文件增长及空间分配方式
    0. 跟踪标记 (Trace Flag) 简介
    SpringBoot + Redis + Shiro 实现权限管理(转)
  • 原文地址:https://www.cnblogs.com/ssol/p/2249757.html
Copyright © 2011-2022 走看看