Visual C++ 游戏开发案例实践代码2.1 HelloWorld代码

2.1 HelloWorld代码

 1 #include <windows.h>                               //一个windows应用程序应该包含的头文件(笔者认为这就是SDK风格的windows应用程序了)
 2 #include <stdio.h>                                 //标准输入输出流文件
 3 
 4                                                    //声明一个回调函数  
 5 LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg, WPARAM wParam, LPARAM lparam);
 6 //窗口句柄,窗口消息
 7 
 8 //创建一个完整的窗口需要经过四个步骤:设计一个窗口类;注册窗口类;创建窗口;显示及更新窗口
 9 //WinMain:Windows 程序的入口函数
10 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
11 {   //hInstance 实例句柄、hPrevInstance默认这个参数为NULL、lpCmdLine存储一个命令行参数
12 
13     WNDCLASS wndcls;            //定义一个窗口对象
14     wndcls.cbClsExtra = 0;      //指定额外内存空间
15     wndcls.cbWndExtra = 0;      //指定额外内存空间
16     wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   //指定窗口背景颜色
17     wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);                 //设置光标样式
18     wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);                     //设置图标样式
19     wndcls.hInstance = hInstance;                                 //指定窗口实例句柄
20     wndcls.lpfnWndProc = WinSunProc;                              //指定窗口函数、窗口主处理函数
21     wndcls.lpszClassName = "Visual C++ Game";                     //窗口类名称
22     wndcls.lpszMenuName = NULL;                                   //菜单
23     wndcls.style = CS_HREDRAW | CS_VREDRAW;
24     RegisterClass(&wndcls);                    //注册窗口类
25     HWND hwnd;                                 //声名窗口句柄
26 
27     //创建窗口,但是这里的窗口是不会显示的
28     hwnd = CreateWindow
29         ("Visual C++ Game",                      // 已注册窗口类的名称   
30         "Visual C++ 游戏开发",                  //窗口标题
31         WS_OVERLAPPEDWINDOW,                    //窗口风格
32         200,                                    //窗口位置的横坐标
33         200,                                    //窗口位置的纵坐标
34         600,                                    //窗口宽度
35         400,                                    //窗口高度
36         NULL,
37         NULL,
38         hInstance,                              //实例句柄
39         NULL
40         );
41     ShowWindow(hwnd, SW_SHOWNORMAL);
42     UpdateWindow(hwnd);               //更新显示
43     //初始化完成后,WinMain进入消息循环
44     MSG msg;
45     while (GetMessage(&msg, NULL, 0, 0))
46     {
47         TranslateMessage(&msg);          //转换键盘消息
48         DispatchMessage(&msg);           //分派消息
49     }
50     return 0;
51 }
52     //窗口函数,窗口函数通常利用switch/case 方式判断消息的种类,以决定处置方式,由于其被Windows 系统所调用的,所以这是一种call back 函数
53     LRESULT CALLBACK WinSunProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
54     {
55         switch (uMsg)                  //判断消息类型
56         {
57         case WM_PAINT:                 //更新窗口消息
58             HDC hDC;                   //定义 hDC 设备
59             PAINTSTRUCT ps;
60             hDC = BeginPaint(hwnd, &ps);       //得到设备hDC
61             TextOut(hDC, 200, 0, "Visual C++ 游戏开发", strlen("Visual C++ 游戏开发"));
62             EndPaint(hwnd, &ps);
63             break;
64         case WM_CLOSE:                        //当单击关闭按钮时,产生关闭消息
65             if (IDYES == MessageBox(hwnd, "是否真的结束?","游戏开发", MB_YESNO))
66             {
67                 DestroyWindow(hwnd);              //单击“确认”按钮,销毁窗口
68             }
69             break;
70         case WM_DESTROY:                         //销毁窗口消息
71             PostQuitMessage(0);                  //退出程序
72             break;
73         default:
74             return DefWindowProc(hwnd, uMsg, wParam,lParam);
75             //在default 处必须调用DefWindowProc,这是Windows内部默认的消息处理函数
76         }
77         return 0;
78     }

 

posted @ 2017-03-17 00:31  haihai187  阅读(1403)  评论(0编辑  收藏  举报