尝试使用以下代码获取 win32 窗口的标题,然后尝试使用 wostringstream 更改相同的窗口标题。这是获取标题的代码
std::wstring Window::getTitle()const
{
int length = SendMessage(hwnd,WM_GETTEXTLENGTH,0,0);
if(length == -1)
return L"";
wchar_t* buffer = new wchar_t[length+1];
SendMessage(hwnd,WM_GETTEXT,length+1,(LPARAM)buffer);
std::wstring str(buffer);
delete[] buffer;
return str;
}
这是尝试使用它的代码:
std::wostringstream oss;
while(window->isRunning)
{
oss.str(L"");
oss<<window->getTitle()<<" FPS : "<<100<<" Frame Time"<<100;
window->setText(oss.str());
}
最终发生的不是显示窗口标题加上 frs 和帧时间,而是显示窗口标题,然后多次重复 FPS 和帧时间文本。我尝试在缓冲区末尾添加一个 '\0' :
buffer[length] = '\0';
哪个没有解决问题。如果我从 getTitle 返回 L"some title" 一切正常,所以我认为问题出在 getTitle 函数内部。