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 }
浙公网安备 33010602011771号