首页 > 代码库 > Win32 Windows编程 三

Win32 Windows编程 三

一、NMAKE 和 Makefile

1.1  NMAKE - 命令解释器, 根据Makefile文件中定义的脚本,完成项目的编译等操作

1.2 Makefile - 定义编译、连接等脚本语言

1.3 Makefile 文件的使用

1.3.1 基本语法规则

window.exe:window.obj //依赖行

    cl.exe window.c /c   //命令行

   link.exe window.obj user32.lib

window.exe 的依赖项是window.obj,如果window.obj被重新改写 window.exe将重新生成

通过时间戳(time stamp)判断程序是否需要重新编译连接,要重新编译连接

如果当文件修改最后时间与时间戳不同,将会重新编译链接.

1.3.2  执行过程

1 NMAKE 首先找到第一个依赖行,根据依赖行之间的关系,建立依赖树。例如:

A:B

B:C

C:D

NMAKE会建立对应的依赖树,

A

|-B

   |-C

      |-D

2 在树建好后 NMAKE会首先执行D的命令行,然后依次执行父节点的命令行,

3 在A的命令行执行结束后,退出NMAKE

4 如果需要执行指定依赖行,需要在执行NMAKE时增加依赖行的名称

 1.4 使用

   1.4.1  NAMKE  指定文件

   1.4.2 使用缺省的文件名
如果make文件名使用makefile 直接使用nmake命令

二、字符编码

MessageBox : MessageBoxA MessageBoxW

2.1 编码的历史

2.1.1 ASCII  0~127  7位表示

2.1.2 ASCII 扩展码 8位 表示

代码页:通过代码页来切换对应的字符

2.1.3  双字节字符集 DBCS

使用一个或两个字节表示字符

      2.1.4 Unicode

全部使用2个字节表示字符

内存/硬盘等资源占用大

2.2 C语言和编码

2.2.1 单字节字符和字符串

char c =  ‘A‘;

char * pc = "ABCD";

2.2.2 宽字节的字符

wchar_t cText = ‘A‘;

wchar_t*pszText =  L"ABCD";

2.2.3 相关函数

单字节字符的函数, 对应有多宽字节的函数。

strlen wcslen mbslen

printf  wprintf

2.2.4 TCHAR

为了程序中可以方便的支持unicode和多字节字符等,所以使用TCHAR来定义字符和字符串

更具_UNICODE宏开关会将TCHAR编译成不同字符类型
#define unicode

#ifndef unicode 
typedef char tchar
#define __t(x) x
#else
typedef wchar_t tchar
#define __t(x) l##x
#endif

使用时需要增加TCHAR.H头文件支持,使用_UNICODE 宏开福安进行编译

定义方式:

TCHAR* pszText = __T( "ABCDEF" );

2.2.5 Unicode的控制台打印

WriteConsole

2.3 Win32 程序与编码

2.3.1 Win32 API 的定义

每个API对多字节和UNICODE分别有不同的版本

MessageBox

MessageBoxA 多字节

MessageBoxW UNICODE字符

     2.3.2 字符转换

MultiByteToWideChar

WideCharToMultiByte