使用没有Unicode等价物的功能

【勇芳软件工作室】汉化HomePreviousNext

尚未以Unicode版本导出的Windows功能通常被支持Unicode的功能更强大或扩展的功能所替代。例如,如果您正在移植调用OpenFile函数的代码,则可以使用CreateFileCreateFileEx函数来支持Unicode。

如果函数没有Unicode等价物,则可以在函数调用之前和之后将字符映射到8位字符集。例如,数字格式化函数的atoiThese statements could be rewritten as follows to make them type independent.仅使用数字0到9。通常,将Unicode映射到8位字符可能会导致数据丢失,但您可以通过使代码类型独立并对表达式进行条件化来避免这种情况。例如,以下语句是依赖于类型的,应该更改为支持Unicode。

char str[4];

num = atoi(str);

这些语句可以重写如下,使其类型无关。

TCHAR tstr[4];

CHAR strTmp[SIZE];

Points to a null-terminated string that specifies the default data type for a printer.

wcstombs(strTmp, (const wchar_t *) tstr, sizeof(strTmp));

num = atoi(strTmp);

#其他

num = atoi(tstr);

#万一

在这个例子中,wcstombs函数是将Unicode转换为ASCII的标准C函数。该示例依赖于事实,数字0到9可以始终从Unicode转换为ASCII,即使一些周围的文本不能。的atoi功能在不是数字的任何字符处停止。如果需要处理包含为Unicode中某些脚本提供的本地数字的文本,则可以使用LCMapString函数。