为什么Windows编程都用UNICODE

对于C++编程来说,无非ANSI和UNICODE,他们之间的区别这里就不赘述了,今天我们要说的士我为什么建议你用UNICODE进行编程。

1、有些基础的都应该知道,一般来说Windows函数都有两个版本,比如最常见的MessageBox有MessageBoxW和MessageBoxA,分别适用于两种字符集。可能你要说,你一直用的是MessageBox,那是因为你调用的知识一个宏

#ifdef _UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif

其他的函数也是同理。

2、在Windows Visa版本中,应用程序最后执行的都是UNICODE版本的函数,如果你调用的是ANSI的,那么ANSI版本的函数只是作为一个转换层(分配内存,转换为UNICODE),然后执行UNICODE版本的函数。无意,使用ANSI会有更多的开销。

3、另外,在进行ANSI向UNICODE转换的过程中,一些Windows函数存在BUG,所以应该直接使用UNICODE来避免。

4、有一些函数是为了兼容之前的16位Windows程序,比如OpenFile,在调用这些函数后他们也会进行一些转换,最后调用新的函数,比如CreateFile,所以直接使用CreateFile会更高效。

5、COM接口方法只接受UNICODE

6、.NET Framework集成只接受UNICODE

猜你喜欢

转载自blog.csdn.net/zhao3132453/article/details/81045895
今日推荐