首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【处女贴】显示乱码?TextOut(hdc,0,0,strWords,strlen(strWords)-1);解决方法

2012-03-04 
【处女贴】显示乱码?TextOut(hdc,0,0,strWords,strlen(strWords)-1)HDChdccharstrWords[]Hello,Win32API

【处女贴】显示乱码?TextOut(hdc,0,0,strWords,strlen(strWords)-1);
HDC   hdc;
char   strWords[]   =   "Hello,Win32API ";
hdc   =   GetDC(   GetDlgItem(hwndDlg,IDC_BUTTON1));
TextOut(hdc,4,4,strWords,strlen(strWords)-1);


画出来是乱码?why?

[解决办法]
试过,正常。
[解决办法]
全乱了,还是最后面的乱了
[解决办法]
应该没什么问题
[解决办法]
vs2005编译

在VS2005中,设置 字符集 为 ANSI 或者未设置 ...
[解决办法]
如果你的程序中没有涉及 unicode 编码,
(比如 unicode方式下的 汉字、韩文 等)
只有 ASCII 字符操作,
那么就不会有任何问题 ...
[解决办法]
使用中间形式编码
HDC hdc;
TCHAR strWords[] = _T( "Hello,Win32API ");
hdc = GetDC( GetDlgItem(hwndDlg,IDC_BUTTON1));
TextOut(hdc,4,4,strWords,strlen(strWords)-1);
[解决办法]
乱码通常两个原因:
1 字符串没有终结字符, 后面出现乱码,因为值都是随机的;
2 编码方式不正确,比如 ANSI方式操作Unicode串, 乱码。

你这里属于原因 2 。
所以,看看你是否需要操作 Unicode,
不需要的话就将字符集修改过来(VS默认 unicode)。

或者将操作都修改为 Unicode 方式的。
[解决办法]
回复人:akirya(坏[其实偶不是什么所谓的坏人]) ( 一星(中级)) 信誉:100 2007-05-16 10:36:04 得分:0

使用中间形式编码
HDC hdc;
TCHAR strWords[] = _T( "Hello,Win32API ");
hdc = GetDC( GetDlgItem(hwndDlg,IDC_BUTTON1));
TextOut(hdc,4,4,strWords,strlen(strWords)-1);

推荐这种方法,但是 strlen 不对吧?
TextOut(hdc,4,4,strWords,strlen(strWords)-1);
==》
TextOut(hdc,4,4,strWords,_tcslen(strWords)-1); //strlen 限定了 ANSI

热点排行