Visual C++ 游戏开发案例实践 代码3.1 算术与赋值运算符示例

代码3.1 算术与赋值运算符示例

 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     char tmsg[128] = { 0 };
56     int num1, num2, num3, num4, num5;     //声名5个变量
57     num1 = 3 + 8;                         //加法运算
58     num2 = 10 - 7;                        //减法运算
59     num3 = 100 * 33;                      //乘法运算
60     num4 = 155 / 5;                       //除法运算
61     num5 = 9 % 2;                         //取模运算
62     //把运算符和结果输出到tmsg中
63     sprintf_s(tmsg, "3+8 = %d 10 -7 = %d 100 * 33 = %d 155/5 = %d 9%%2 = %d", num1, num2, num3, num4, num5);
64 
65     switch (uMsg)                  //判断消息类型
66     {
67     case WM_PAINT:                 //更新窗口消息
68         HDC hDC;                   //定义 hDC 设备
69         PAINTSTRUCT ps;
70         hDC = BeginPaint(hwnd, &ps);       //得到设备hDC
71         TextOut(hDC, 150, 0, tmsg, strlen(tmsg));
72         EndPaint(hwnd, &ps);
73         break;
74     case WM_CLOSE:                        //当单击关闭按钮时,产生关闭消息
75         if (IDYES == MessageBox(hwnd, "是否真的结束?", "游戏开发", MB_YESNO))
76         {
77             DestroyWindow(hwnd);              //单击“确认”按钮,销毁窗口
78         }
79         break;
80     case WM_DESTROY:                         //销毁窗口消息
81         PostQuitMessage(0);                  //退出程序
82         break;
83     default:
84         return DefWindowProc(hwnd, uMsg, wParam, lParam);
85         //在default 处必须调用DefWindowProc,这是Windows内部默认的消息处理函数
86     }
87     return 0;
88 }
View Code

 

posted @ 2017-03-17 00:53  haihai187  阅读(293)  评论(0)    收藏  举报