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

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

posted on 2011-11-15 15:04  [CC]  阅读(527)  评论(0编辑  收藏  举报

导航