游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3314|回复: 12

学DX屏幕上画字的时候遇到的问题(与DX关系不大)

[复制链接]

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2007-11-17 08:32:00 | 显示全部楼层 |阅读模式
昨天看到用ID3DXFONT接口画字,要先用LOGFONT结构初始化,

我用的是VS2005,LOGFONT里的成员lfFaceName要求的好像是宽字节,

书上用的是strcpy(lf.lfFaceName, "time New Romma");这样编译的时候提示没办法进行类型转换,我查了一下

CSND也没有对应宽字节版本的strcpy,直接用= 赋值就更不用说了,也是没办法把char*转化为WCHAR的,大家有

甚麽好的办法给这个成员赋值啊??

大家一般遇到这样用宽字节的时候应该怎么弄啊,又没办法像普通的变量那样WCHAR tex = "sdaf"这里也是不能

类型转换…… [em6]

1

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2007-11-17 13:51:00 | 显示全部楼层

Re: 学DX屏幕上画字的时候遇到的问题(与DX关系不大)

试一试用MultiByteToWideChar(...)看看。。

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2007-11-17 14:56:00 | 显示全部楼层

Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

wstrcpy?

5

主题

17

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2007-11-17 15:51:00 | 显示全部楼层

Re: 学DX屏幕上画字的时候遇到的问题(与DX关系不大)

直接用 L"string" 就可以了..

2

主题

21

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2007-11-17 21:53:00 | 显示全部楼层

Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

这样?
wcscpy(lf.lfFaceName, L"time New Romma")

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2007-11-18 01:32:00 | 显示全部楼层

Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

HRESULT cFont::Create(cGraphics *Graphics, char *Name, long Size, BOOL Bold, DWORD CharSet,BOOL Italic)
{
        if(!Graphics) return E_FAIL;
        if(!Graphics->GetDevice()) return E_FAIL;
        ZeroMemory(&m_fontdesc,sizeof(D3DXFONT_DESC));
        // 设置字体属性
        strcpy(m_fontdesc.FaceName, Name);
        m_fontdesc.Height = -Size;
        m_fontdesc.Weight = (Bold == TRUE) ? 700 : 0;
        m_fontdesc.Italic = Italic;
        m_fontdesc.CharSet=(BYTE)CharSet;

        if(FAILED(D3DXCreateFontIndirect(Graphics->GetDevice(),&m_fontdesc,&m_pD3DFont)))
                return E_FAIL;
        return S_OK;

}
我写的字体类,是和你书上的一个样啊
没出错- -!

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2007-11-20 10:52:00 | 显示全部楼层

Re: Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

lessball: Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

这样?
wcscpy(lf.lfFaceName, L"time New Romma")


funcman: Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

wstrcpy?

[em11]wcscpy才是

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2007-11-20 12:30:00 | 显示全部楼层

Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

无名剑用的不是vc8.0吧,vc6.0应该不存在这样的问题的。

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2007-11-20 12:36:00 | 显示全部楼层

Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

chriscross说的直接用 L"string" 就可以好像我 在哪里有见过,今晚试试

还有一点,我在读取.x文件的时候,里面的纹理文件的名称在vc8.0里面也遇到类型转换的问题。

而这个名称是用变量从.x文件里读取出来的,这个又应该怎么转换啊??

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2007-11-20 14:48:00 | 显示全部楼层

Re:学DX屏幕上画字的时候遇到的问题(与DX关系不大)

L"string"
是宽字符串常量,C++标准:  A character literal that begins with the letter L, such as L'x', is a wide-character literal. A wide-character literal has type wchar_t.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 23:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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