如何在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);
}
Run Code Online (Sandbox Code Playgroud)
编辑:感谢您的信息,但我仍然有一些难以在数据类型之间进行转换.这是我得到的错误:
无法从'std :: basic_string <_Elem,_Traits,_Ax>'转换为'std :: basic_string <_Elem,_Traits,_Ax>'
编辑2:谢谢你的帮助,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);
Run Code Online (Sandbox Code Playgroud)
两者之一
如果您稍后决定将DT_LEFT更改为DT_CENTER,则第一个可能会更好.