3
尝试使用以下代码获取win32窗口的标题,然后尝试使用wostringstream更改相同的窗口标题。下面是代码拿到冠军使用WM_GETTEXT获取窗口标题
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;
}
这里是一个尝试使用此代码:而不是显示在窗口的标题加上FRS和帧时间结束意外事件发生是
std::wostringstream oss;
while(window->isRunning)
{
oss.str(L"");
oss<<window->getTitle()<<" FPS : "<<100<<" Frame Time"<<100;
window->setText(oss.str());
}
它会显示窗口标题,然后多次重复FPS和帧时间文本。我试图在缓冲区末尾添加一个'\ 0':
buffer[length] = '\0';
哪个没有解决问题。如果我从getTitle返回L“一些标题”,一切工作正常,所以我认为问题在getTitle函数内部。
大声笑,在这里我试图找出什么是错误的字符缓冲区,谢谢! – 2012-04-15 03:41:28