C++のWindows游戏开发 第二天
来源:互联网 发布:设置禁止数据写入u盘 编辑:程序博客网 时间:2024/05/16 12:29
今天继续学习了昨天的剩余部份,简单的对 HelloVisualStudio 代码中的函数、参数进行了解。
#include"Windows.h"int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){MessageBox(NULL, L"First Blood !Hello ! 我来征服你了",L"FirstBlood 消息窗口",0);return 0;}
在MSDN中可以查到 WinMain( ) 函数原型
int 之后的 MINAPI 其实可以基本忽略,它可以理解为 WinDef.h头文件中的宏定义,定义如下:
#define WINAPI _stdcall
_stdcall 表示的是一种调用约定,主要功能是告诉编译器应当以 Windows 兼容的方式来产生机器指令。其实这一句也可体忽略,但会得到一句警告。
WINAPI 有时候会写作 CALLBACK,他们的宏定义是完全一样的
#define CALLBACK _stdcall
函数中的 _In 也可以理解为一个宏,表示需要自行输入一个参数,其对应的为 _out ,它表示指定的这个参数是函数本身想外输出(output)的一个参数,之后我们也常常会在代码中见到它们。
HINSTANCE :h 前缀表示这个参数类型是 handle ,句柄的意思(以后会学到),Instance 中文是 实例 连起来就是中文中文实例,hInstance 其实是一个特殊的数值,当一个程序在Windows下运行是,它唯一对应一个运行中的实例,也只有运行的程序实例,才有资格分配到实例句柄,每个程序都会被分配到一个句柄值,并且通过 hInstance 参数传递给程序的入口点 WinMain函数。
而第二个系统默认为为 NULL ,HINSTANCE hPrevInstance 对参数名进行分析 : h代表句柄,Prev 代表先前的(previous) Instance代表为实例。
我对以上暂时的理解是 :INSTANCE J就像一把钥匙,可以打开Windows下的一把锁,这样程序才可以安全合法的运行。而第二个参数 hPrevIstance 则是为了检验先前的进程确保不冲突。
LPSTR 类型的是 lpCmdLine ,它是一个以空终止的字符串,指定传递给运用程序的命令行参数,lp 表示该参数是一个指针 , cmd 是 command(命令),CmdLine 命令行,就是类似与DOS下的命令。
int 类型的 nCmdShow ,指定程序窗口显示的显示状态,参数取值 如下:
这就是 WinMain()函数。
MSDN 中 MessageBox 函数原型:
int WINAPI MessageBox( _In_opt_ HWND hWnd, _In_opt_ LPCTSTR lpText, _In_opt_ LPCTSTR lpCation, _In_UINT uType);
_opt 代表可选择的(opional),也就是选择权在我们,可以不填,直接用 NULL
第一个参数 HWND 类型 的 hWnd ,表示我们显示的消息框所属的窗口的句柄。在进行Windows编程句柄很重要。
第二个参数 LPCTSTR 类型的 lpText,它是以NULL结尾的字符串,表示显示内容。
第三个参数LPCTSTR 类型的 lpCaptio,同上表示消息的标题内容
第四个参数UINT类型的uType,表示的是消息窗口的格式:
如果想要多个标识符一起用的话,可以使用 :| ,在下一个例子就可以看见。
- C++のWindows游戏开发 第二天
- Windows游戏开发(C++)
- C++のWindows游戏开发 第一天
- Android游戏开发第二天(1)
- Android游戏开发第二天(3)
- iOS开发之C语言第二天
- 《猜猜看游戏》第二天
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之1: 开场白
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之7: Chap9: Color
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之8: Chap10: Lighting
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之9: Chap11: Texturing
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之10: Chap12: Blending
- windows游戏编程技巧大师第二章
- C#游戏开发
- 贪吃蛇 第二个C游戏
- 四天玩转Windows phone7开发笔记(第二天)
- android围棋游戏开发第二周总结
- JavaFX打砖块游戏开发 第二课
- stm32LCD必须进行串口初始化
- 面试(四)
- 图片压缩 二次采样
- 【NOIP2016提高A组模拟10.15】最大化
- 网页采集+PDO入库
- C++のWindows游戏开发 第二天
- 支付宝
- 现在开始努力掌握递归算法
- jquery easyui input 赋值与取值
- p1613 跑路(倍增)
- 有的鱼
- 带缓冲区的输入流(读)案例
- live555读文件改为内存读取实现
- 类与对象学习笔记(Python)