我试图按如下方式更改MFC窗口的标题:
BOOL CameraUI::OnInitDialog()
{
// set ui title
TCHAR wintitle[100];
_stprintf_s(wintitle, sizeof wintitle, _T("Camera %u"), (UINT) getSerialNumber());
SetWindowText(wintitle);
return TRUE;
}
调试时,在函数末尾出现此错误:
Run-Time Check Failure #2 - Stack around the variable 'wintitle' was corrupted.
我正在使用MSVC2008。我在做什么错?!
最佳答案
不要按原样使用sizeof winTitle
。_stprintf_s
函数需要characters
的数目,而不是bytes
的数目。
http://msdn.microsoft.com/en-us/library/ce3zzk1k.aspx
由于显然您正在使用TCHAR,因此字符数如下:
sizeof(winTitle) / sizeof(winTitle[0])
要么
sizeof(winTitle) / sizeof(TCHAR)
MS世界中的TCHAR将是1个字节(如果内部版本为MBCS)或2个字节(即Unicode)。
假设您正在使用Unicode,只需声明
sizeof winTitle
,即可指定数组最多可容纳200个字符,但这不是正确的(显示sizeof winTitle
给您的内容,您会看到它为200)。关于c++ - MFC中设置UI标题时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23617575/