Run-Time Check Failure #2 - Stack around the variable 'InitCtrls' was corrupted.

sl7520193 2019-01-07 05:42:22
在添加这个函数后,点关闭软件就会弹出提示Run-Time Check Failure #2 - Stack around the variable 'InitCtrls' was corrupted.
也不知道哪里越界了
void progress::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CStdioFile myFile;
CFileException fileException;
if (myFile.Open(_T("D:\\新建文件夹 (5)\\MFCApplication11\\MFCApplication11\\progress.txt"), CFile::typeText | CFile::modeReadWrite), &fileException)
{
myFile.SeekToBegin();
CString vx;


while (myFile.ReadString(vx))
{
m_edith.SetSel(-1);//编辑框定位到末尾
vx.Format(L"%s\r\n", vx);
m_edith.ReplaceSel(vx);
}
}
else
TRACE("Can't open file %s,error=%u\n", _T("D:\\新建文件夹 (5)\\MFCApplication11\\MFCApplication11\\progress.txt"), fileException.m_cause);
myFile.Close();
}
...全文
311 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqzj70 2019-01-26
  • 打赏
  • 举报
回复
把这个变量InitCtrls 设置为静态即可解决, 如 static char initCtrls[x];
xiaohuh421 2019-01-09
  • 打赏
  • 举报
回复
一般正常的stack around xxx 都是内存被破坏导致的. 既然是对话框类自己生成的代码部分出问题, 那么说明要么库版本不对, 要么就是你后续的代码, 破坏了那个变量所在的内存
tiger波波 2019-01-08
  • 打赏
  • 举报
回复
试了下,没啥问题。代码也没啥问题,我觉着是其他地方的事
zgl7903 2019-01-08
  • 打赏
  • 举报
回复
InitCtrls 周边的代码贴出来看看

sl7520193 2019-01-08
  • 打赏
  • 举报
回复
引用 8 楼 zgl7903 的回复:
把有怀疑的部分 屏蔽了 试试看 重点检查strcpy memcpy p++ 等
我试试
zgl7903 2019-01-08
  • 打赏
  • 举报
回复
把有怀疑的部分 屏蔽了 试试看
重点检查strcpy memcpy p++ 等

sl7520193 2019-01-08
  • 打赏
  • 举报
回复
现在又变成了“dlg”有问题了
sl7520193 2019-01-08
  • 打赏
  • 举报
回复
我只是在子对话框创建类,然后编辑框显示txt内容,感觉其他地方也没问题啊
sl7520193 2019-01-08
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:
InitCtrls 周边的代码贴出来看看
BOOL CMFCApplication11App::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。 否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp::InitInstance(); AfxEnableControlContainer(); // 创建 shell 管理器,以防对话框包含 // 任何 shell 树视图控件或 shell 列表视图控件。 CShellManager *pShellManager = new CShellManager; // 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题 CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); CMFCApplication11Dlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } else if (nResponse == -1) { TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n"); TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n"); } // 删除上面创建的 shell 管理器。 if (pShellManager != NULL) { delete pShellManager; } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; }
sl7520193 2019-01-07
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
添加一个中间变量试试
CString vx2; 
vx2.Format(L"%s\r\n",  (LPCTSTR)vx);
m_edith.ReplaceSel(vx2);
还是不行啊
zgl7903 2019-01-07
  • 打赏
  • 举报
回复
添加一个中间变量试试
CString vx2; 
vx2.Format(L"%s\r\n", (LPCTSTR)vx);
m_edith.ReplaceSel(vx2);


16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧