gpt4 book ai didi

c++ - Win32 : Storing Multi-Line Text in a Buffer

转载 作者:太空宇宙 更新时间:2023-11-04 16:23:58 26 4
gpt4 key购买 nike

我将如何在 Win32 中显示多行文本?此代码在我的 GamePaint() 函数中,我想将前 5 名高分(存储在结构的属性中)写到屏幕上。我可以使用这种方法让它成功地输出一行...如何使 TCHAR 缓冲区、szText 存储多行?到目前为止,这是我尝试过的:

原代码:

    //draw rect for normal scores
ChangeTextFormat(hDC, hWnd, 1);
TCHAR szText[64];
RECT rcNormalScores = { 268, 122, 436, 330};
RECT rcHardScores = { 37, 122, 198, 330};

//stringstream ssTemp;

for(int i = 0; i < 5; i++)
{
//ssTemp << i;

//display nth Normal score
wsprintf(szText, "%d \n", g_scoreTop[i].num);
DrawText(hDC, szText, -1, &rcNormalScores, DT_LEFT | DT_WORDBREAK);

}

编辑:感谢您提供的信息,但我在数据类型之间转换时仍然遇到一些困难。这是我遇到的错误:

cannot convert from 'std::basic_string<_Elem,_Traits,_Ax>' to 'std::basic_string<_Elem,_Traits,_Ax>'

EDIT2:感谢 queen3 的帮助。我已经在下面发布了工作代码:

工作代码:

ChangeTextFormat(hDC, hWnd, 1);
RECT rcNormalScores = { 37, 122, 198, 330};
RECT rcHardScores = { 268, 122, 436, 330};

stringstream ssTemp;

for(int i = 0; i < 5; i++)
{
ssTemp << g_scoreTop[i].num << " \n";
}

string sTemp = ssTemp.str();
LPCSTR LPTemp = (LPCSTR)sTemp.c_str();

DrawText(hDC, LPTemp, -1, &rcNormalScores, DT_LEFT | DT_WORDBREAK);
DrawText(hDC, LPTemp, -1, &rcHardScores, DT_LEFT | DT_WORDBREAK);

最佳答案

两者之一

  1. 用所有行和换行符制作一个字符串并做单个 DrawText
  2. 每次通过增加字符串的高度来调整 rcNormalScores .top(为此你可以使用 DT_CALCRECT 标志)

如果您稍后决定将 DT_LEFT 更改为 DT_CENTER,第一个可能会更好。

关于c++ - Win32 : Storing Multi-Line Text in a Buffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com