Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用int到LPCTSTR转换的Directx9字体更新_C++_Directx_Directx 9 - Fatal编程技术网

C++ 使用int到LPCTSTR转换的Directx9字体更新

C++ 使用int到LPCTSTR转换的Directx9字体更新,c++,directx,directx-9,C++,Directx,Directx 9,我想在屏幕上显示分数。以下代码可以正常工作: g_Font = NULL; D3DXFONT_DESC f = {fontSize, 0, 400, 0, false, DEFAULT_CHARSET, OUT_TT_PRECIS,

我想在屏幕上显示分数。以下代码可以正常工作:

g_Font = NULL;
D3DXFONT_DESC f = {fontSize,
                    0,
                    400,
                    0,
                    false,
                    DEFAULT_CHARSET,
                    OUT_TT_PRECIS,
                    CLIP_DEFAULT_PRECIS,
                    DEFAULT_PITCH,
                    fontName};
fontDesc = f;
fontPosition.top = top;
fontPosition.left = left;
fontPosition.right = right;
fontPosition.bottom = bottom;
text = t;
D3DXCreateFontIndirect(device,&fontDesc,&g_Font);
为每个帧渲染以下部分:

g_Font->DrawText(NULL,
        text,
        -1,
        &fontPosition,
        DT_CENTER,
        0xffffffff); //draw text

我想做的是,在运行时更新文本。我只是更新文本变量,因为每个帧都会运行绘图代码,但它不起作用。简单的文本有效,但以下构造无效:

const size_t buflen = 100;
TCHAR buf[buflen];
_sntprintf(buf, buflen - 1, TEXT("Point: %d"), point);
text = (LPCTSTR)buf;

我尝试了几乎所有我能在网上找到的解决方案,但都不起作用。我可以看到整数已成功转换,但在下面的渲染中存在荒谬的字符。有什么解决方案吗?

您发布的代码不完整,但我仍会尝试为您提供一个答案,帮助您解决问题

第一个问题是,我认为您正在混合概念,并且您正在处理
DrawText
,就像它是
WinForms
或其他东西的UI元素一样。每次要更新文本时,都需要调用
DrawText
。它不存储指向您传递的缓冲区的指针,并在该缓冲区更改时自动更新文本,请参阅文档。如果要添加“标签包装器”,需要在调用
BeginScene
EndScene
之间调用
DrawText
,很可能是在
Render
方法中


至于荒谬的字符,如果您的字符串转换正确,您确定在再次绘制它之前清除
RenderTarget
?你不能简单地
DrawText
你的新值吗?是的,我可以,但它是为抽象实现的另一个类;所以这不是问题的重点。如果我们不告诉我们如何实现
pointLabel
上的
setText
,我们就无法告诉您多少。。。
pointLabel
是否呈现?“我只是更新了文本变量”并更新了代码。这只是赋值操作,忘记
pointLabel