MFC 怎么把UNICODE转换Ansi 神啊..救命啊......

sd2619168 2011-11-24 08:28:13
我在VC2008建了DLL,里面创建了一个对话框,显示人物的名称:
TCHAR *renwubase;
renwubase=(TCHAR*)0x02B466F0;
SetWindowText(m_mrenwu,*renwubase);
这样显示的是乱码,我以为是地址出错,就在CE上测试了一下,选文本型显示的时候如果把UNICODE选上显示的乱码是一样的,但是不选UNICODE的话显示就人物的名称了。

那我应该怎么在编译器上把UNICODE转换为ANSI呢?

告诉我一下,是不是我的代码写错了?

昨晚搞了一个晚上了,今天早起继续搞......大神们救命啊...
...全文
323 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd2619168 2011-11-24
  • 打赏
  • 举报
回复
谢谢...
zyrr159487 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sd2619168 的回复:]

VC2008里是不是项目左击-》属性-》常规-》字节集-》使用多字节字符集

是不是?
[/Quote]
是的
sd2619168 2011-11-24
  • 打赏
  • 举报
回复
VC2008里是不是项目左击-》属性-》常规-》字节集-》使用多字节字符集

是不是?
buyong 2011-11-24
  • 打赏
  • 举报
回复
工程属性里改成多字节字符集
sd2619168 2011-11-24
  • 打赏
  • 举报
回复
7楼

连把TCHAR *renwubase;
renwubase=(TCHAR*)0x02B466F0;
SetWindowText(m_mrenwu,*renwubase);
这代码也带上吧,我想看看具体怎么写..
用户 昵称 2011-11-24
  • 打赏
  • 举报
回复
int ustr_astr(WCHAR * unicodestr, char *ansistr )
{
int result = 0;
try
{
int needlen = WideCharToMultiByte( CP_ACP, 0, unicodestr, -1, NULL, 0, NULL, NULL );
if( needlen < 0 )
{
return needlen;
}
result = WideCharToMultiByte( CP_ACP, 0, unicodestr, -1, ansistr, needlen + 1, NULL, NULL );
if( result < 0 )
{
return result;
}
return strlen( ansistr );
}
catch( ... )
{
}
return result;
}
sd2619168 2011-11-24
  • 打赏
  • 举报
回复
你们看一下VC2008在Project setting下c++选项卡中有如下部分:
/O2 /Oi /GL /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_USRDLL" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MT /Gy /Yu"stdafx.h" /Fp"Release\GameDll_RXJH.pch" /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /nologo /c /Zi /TP /errorReport:prompt
战在春秋 2011-11-24
  • 打赏
  • 举报
回复
对于VC,编译器会通过预定义指令判断当前系统来选择ANSI还是UNICODE,编译时如果定义了UNICODE和_UNICODE,那么编译出来的就是UNICODE,如果定义了_MBCS则是ANSI的。

我用的是vc6:在Project setting下c++选项卡中有如下部分:
nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/dlg.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c


vc2008的Project setting中应该也有相应设置,楼主找一找。
战在春秋 2011-11-24
  • 打赏
  • 举报
回复
对于VC,编译器会通过预定义指令判断当前系统来选择ANSI还是UNICODE,编译时如果定义了UNICODE和_UNICODE,那么编译出来的就是UNICODE,如果定义了_MBCS则是ANSI的。

我用的是vc6:在Project setting下c++选项卡中有如下部分:
nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/dlg.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c


vc2008的Project setting中应该也有相应设置,楼主找一找。
pengzhixi 2011-11-24
  • 打赏
  • 举报
回复
但是你这本身就不是Unicode字符啊,还要转什么。你是要从多字节字符转成Unicode吧。如果是这样那么得用MultiByteToWideChar
pengzhixi 2011-11-24
  • 打赏
  • 举报
回复
WideCharToMultiByte
pengzhixi 2011-11-24
  • 打赏
  • 举报
回复
WideCharToMultiByte

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧