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,我们大家一起讨论,一起研究。

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

  • 相关阅读:
    计算机程序的构造和解释
    StackOverflow之旅<1>------{去掉烦人的"!=null"判断}
    tomcat 启动显示指定的服务未安装
    Sql Server 表的复制
    Sql Server配置管理器与 Sql Server Management Studio
    “因为数据库正在使用,所以无法获得对数据库的独占访问权。”处理
    Win10磁贴 横向排列 增加多行 多列 磁贴横向展示
    解决使用Hyper-v 设置虚拟机网卡出现-从网络文件夹中隐藏
    Hyper-V网络设置(物理机+虚拟机)
    易语言等软件自动获取管理员权限,在64位Windows7系统非管理员帐户中执行
  • 原文地址:https://www.cnblogs.com/ssol/p/2249757.html
Copyright © 2011-2022 走看看