gpt4 book ai didi

c++ - 在 MFC 中设置 UI 标题时出错

转载 作者:行者123 更新时间:2023-11-30 01:17:47 25 4
gpt4 key购买 nike

我正在尝试按如下方式更改 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.

我正在使用 MSVC 2008。我做错了什么?!

最佳答案

不要按原样使用 sizeof winTitle

_stprintf_s 函数需要字符数,而不是字节数

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com