游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: fyxx

求助,为什么DrawText输出中文是乱码

[复制链接]

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
发表于 2007-1-1 14:55:00 | 显示全部楼层

Re: 求助,为什么DrawText输出中文是乱码

回应楼上,应该不需要char 数组,因为参数已经传进去了,所以就不会被改变因为是const char*;

心中要有毛主席,要坚定马克思主义 要特别能吃苦,特别能干活,特别能坚持,要参观毛主席纪念堂,看升国旗,唱国歌.........................假以时日文字才能正确显示.


不过在使用它之前,你要有D3DXSPRITE接口
所以你要用
HRESULT D3DXCreateSprite(
  LPDIRECT3DDEVICE9 pDevice,
  LPD3DXSPRITE * ppSprite
);
来得到D3DXSPRITE接口

所以整个过程就是这样:

HRESULT rs;
LPD3DXSPRITE sprite;
rs=D3DXCreateSprite( D3DDevice,&sprite);

g_pFont->DrawText(sprite,"毛主席万岁!!!!!",-1,&TextPort,0,D3DCOLOR_RGBA(255,255,255,255));

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
发表于 2007-1-2 14:18:00 | 显示全部楼层

Re: 求助,为什么DrawText输出中文是乱码

好了终于帮你改好了,代码如下:
        //        sprite->Begin(0);
                g_pFont->DrawTextW(0,L"我爱毛主席!!!",-1,&TextPort,0,D3DCOLOR_RGBA(255,255,255,255));
        //        sprite->End();
sf_200712141746.jpg

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-1-2 18:47:00 | 显示全部楼层

Re: 求助,为什么DrawText输出中文是乱码

非常非常感谢........................

4

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2007-1-4 16:22:00 | 显示全部楼层

Re: 求助,为什么DrawText输出中文是乱码

发表两点,我没试呢,你可以试一下
首先,既然你要显示的东西能够显示出来,说明你的函数成功的执行了,而且字体已经创建成功,乱码,表示你的字体采用的编码格式不正确,楼上有建议使用L""这个办法的,你试试吧,或许_T("")这个转换对你有用,这是unicode和ASCII之间的事。
第二,函数里第三个参数表示的是字符串长度,如果用了-1,那么你的字符串必须是以NULL结尾的,很明显你使用的字符串不满足要求。
我也很菜,如果说的有什么地方不对,大家指正`~
--_--!

1

主题

15

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2007-1-5 16:01:00 | 显示全部楼层

Re: 求助,为什么DrawText输出中文是乱码

LZ是不是没有显式的指定文本的字符集?
你试试在创建字体时,显式的设置为GB2312_CHARSET。

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-1-5 16:32:00 | 显示全部楼层

Re: 求助,为什么DrawText输出中文是乱码

发表两点,我没试呢,你可以试一下
首先,既然你要显示的东西能够显示出来,说明你的函数成功的执行了,而且字体已经创建成功,乱码,表示你的字体采用的编码格式不正确,楼上有建议使用L""这个办法的,你试试吧,或许_T("")这个转换对你有用,这是unicode和ASCII之间的事。
第二,函数里第三个参数表示的是字符串长度,如果用了-1,那么你的字符串必须是以NULL结尾的,很明显你使用的字符串不满足要求。
我也很菜,如果说的有什么地方不对,大家指正`~
--_--!


反正咱是小白,那就死皮赖脸的问到底了.........
关于第2点,字符串必须是NULL结尾.....
请问如何判断字符串是否是NULL结尾,还有如何定义以NULL结尾的字符串?

4

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2007-1-8 10:13:00 | 显示全部楼层

Re: 求助,为什么DrawText输出中文是乱码

没必要判断是以什么结尾的,设置个变量表示你要显示的字符串,比如 char[]  szText ,再用strlen( szText ),不就行了吗。

NULL就是0,以"\0"结尾的字符串,长度就可以用-1表示,微软会为你计算出它的实际长度。

楼上有人说过建议你用变量存一下字符串,而不是直接表示出来,顶一下此观点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 05:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表