VC中怎样创建UNICODE版Windows程序

VC中怎样创建UNICODE版Windows程序,第1张

定义UNICODE(也可能是 _UNICODE)宏。
windows下每个与字符相关的函数都有ANSI版与Unicode版。如CString对象,定义了UNICODE(_UNICODE)的话它表示CStringW,否则为CStringA。它的定义大概如下:
#ifdef UNICODE
#define CString CStringW
#else
#define CString CStringA
当然你也可以不定义宏,而直接使用ANSI函数或Unicode函数。

具体步骤:打开[工程]->[设置…]对话框,在 C/C++ 标签对话框的“预处理程序定义”中去除 _MBCS,加上 _UNICODE,UNICODE。(注意中间用逗号隔开)。
在没有定义 UNICODE 和 _UNICODE 前,所有函数和类型都默认使用 ANSI 的版本;在定义了 UNICODE 和 _UNICODE 之后,所有的 MFC 类和 Windows API 都变成了宽字节版本了

VC6的情况是这样的

project->setting->如下图

如果有_MBCS,删除掉。_MBCS表示ANSI或者GB2312编码

添加上_UNICODE,UNICODE

首先告诉你VC6根本就不支持UNICODE,如果支持的话,我们就不会用char了都改用wchar_t了,如果是用的是VS2003及更高版本,在项目--属性--常规,去掉支持UNICODE

对,有。

#define _CONVERSION_USES_THREAD_LOCALE
#include <atlbaseh>
#include <atlconvh>
#include <stdioh>
#include <stringh>
int main()
{
    USES_CONVERSION;
    _acp = CP_ACP;
    char buf[3] = {0};
    buf[0] = getchar();
    buf[1] = getchar();
    wchar_t tmpbuf[2] = {0};
    tmpbuf[0] = A2W(buf)[0];
    _acp = CP_UTF8;
    char utf8buf[4];
    strcpy(utf8buf, W2A(tmpbuf));
    
    int i = 0;
    while(utf8buf[i] != 0)
    {
        printf("%02x ", (unsigned char)utf8buf[i]);
        ++i;
    }
    return 0;
}

如果不是VC60而是新的VC的话是新的写法。

你可以输入一个日进去看看


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13380595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存