次のコードで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;
}
を取得するためのコードは、これを使用しようとするコードです:
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から "some title"を返すと、すべて正常に動作するので、問題はgetTitle関数の中にあると考えています。
Lol、ここで私はcharバッファで何が間違っているのかを調べようとしています、ありがとう! –