将应用程序转换成符合unicode的应用程序应该遵循的原则:
1.将文本串作为字符数组,而不是chars数组或字节数组。
2.将通用数据类型如TCHAR和PTSTR用于文本数组和字符串。
3.将显示数据类型如BYTE和PBYTE用于字节,字节指针和数据缓存。
4.将TEXT宏用于原义字符和字符串。
5.全局性替换,如PTSTR替换PSTR
6.修改字符串运算问题,类似sizeof(szBuffer)/(TCHAR), malloc(nCharacters *sizeof(TCHAR))
资源编译器对所有的资源进行编译时,输出文件是资源的二进制文件,资源中的字符串值总是写作unicode字符串,如果未定义UNICODE宏,系统将进行内部转换。如调用loadstring 函数实际是调用loadstringA(),loadstringA()就会从你的资源文件中读取字符串,并把它转换成ANSI字符串。
IsTextUnicode函数用于确定文本文件是否未unicode。
MultibyteToWideChar和WideCharToMultiByte可用于两种字符串之间的相互转化,可把0作为cchMultiByte的值作
为参数传入来确定需要分配的缓存大小,再调用一次实现转换。
这样你可以为你的dll函数编写unicode和ansi版本(例子可参见windows核心编程2.9.4),最后再用dll分配的头
文件中,可以用#ifdef
#define
#else
#define
建立两个函数的原型。