《Visual C++ 角色扮演游戏程序设计》-WinLib.h

WinLib.h
《Visual C++ 角色扮演游戏程序设计》的第三章“windows程序设计”中,作者为了能更简单的使用Win32 API与C++,封装了自定义的基础类库。作者坂本千寻再次让我见识到了“飞花摘叶皆可伤人,草木竹石均可为剑”!
在这里,我把节奏放慢,慢慢看,好好消化。

#define STRICT                  // 由Windows.h所带出的严谨检查模式
/*
让编译器进行严格类型检查.这是条件编译时需要用的。为了让预处理指令能进行选择和变化,
预处理指令依赖的并不是一般的逻辑判断,而是检查某个标识是否在以前已经被设定。
要设定某一个标识就要使用“#define”预处理指令。
*/
#define WIN32_LEAN_AND_MEAN     //把较少用的定义传入
/*
↑让编译器去除不经常用的头文件(一般包含windows.h要包含一堆用不到的头文件)
↑不加载MFC所需的模块。如果你的工程不使用MFC,就加上这句,
↑这样一来在编译链接时,包括最后生成的一些供调试用的模块时,速度更快,容量更小。
*/
#if defined(_MSC_VER) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC       // 确保除错代码所要用的內存
/*
↑_CRTDBG_MAP_ALLOC 启用内存泄漏检查
↑VS中自带了内存泄露检测工具,若要启用内存泄露检测。
↑#define _CRTDBG_MAP_ALLOC
↑#include <crtdbg.h>
↑它们的先后顺序不能改变。通过包括 crtdbg.h,将malloc和free函数映射到其”Debug”版本_malloc_dbg和_free_dbg,这些函数将跟踪内存分配和释放。
↑此映射只在调试版本(在其中定义了_DEBUG)中发生。#define语句将CRT堆函数的基版本映射到对应的”Debug”版本。
*/
#endif

#include <windows.h>
/*一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。
WINDEF.H 基本数据类型定义。
WINNT.H 支持Unicode的类型定义。
WINBASE.H Kernel(内核)函数。
WINUSER.H 用户界面函数。
WINGDI.H 图形设备接口函数。
*/
#include <stdio.h>
/*
stdio: standard input&output
表示标准输入输出头文件!所以用到标准输入输出函数时,就要调用这个头文件!
*/
#include <string.h>
/*
表示包含字符串处理函数的头文件,是C语言中的预处理命令。
经该预处理后,可调用字符串处理函数,例如strlen()函数(求字符串长度函数)、strcat()函数(字符串拼接函数)、strcmp()函数(字符串比较函数)等等
*/
#include <stdlib.h>
/*
stdlib:standard library 标准库头文件   
stdlib头文件里包含了C、C++语言的最常用的系统函数,该文件包含了的C语言标准库函数的定义
stdlib.h里面定义了五种类型、一些宏和通用工具函数。 
类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;
宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;
常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
*/ 
#if defined(_MSC_VER) && defined(_DEBUG)
#include <crtdbg.h>
//crtdbg:c run time debug
#define DEBUG_NEW   new(_NORMAL_BLOCK, __FILE__, __LINE__)
#else
#define DEBUG_NEW   new
#endif

#include <Application.h>
#include <Window.h>
#include <dc.h>
#include <Dialog.h>
#include <Geometry.h>
#include <Misc.h>

// 在VC++中,这指出连接的程式库
#ifdef  _MSC_VER
/*
_MSC_VER:Microsoft C Version
Microsoft的C编译器的版本
*/
    #ifdef  _DEBUG
        #pragma comment(lib, "WinLibD.lib")
/*
#pragma comment(lib,"xxx.lib") 告诉编译器你要用到xxx.lib库
*/
    #else
        #pragma comment(lib, "WinLib.lib")
    #endif
#endif
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值