在添加這個函式后,點關閉軟體就會彈出提示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();
}
uj5u.com熱心網友回復:
添加一個中間變數試試CString vx2;
vx2.Format(L"%s\r\n", (LPCTSTR)vx);
m_edith.ReplaceSel(vx2);
uj5u.com熱心網友回復:
還是不行啊
uj5u.com熱心網友回復:
InitCtrls 周邊的代碼貼出來看看uj5u.com熱心網友回復:
試了下,沒啥問題。代碼也沒啥問題,我覺著是其他地方的事uj5u.com熱心網友回復:
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;
}
uj5u.com熱心網友回復:
我只是在子對話框創建類,然后編輯框顯示txt內容,感覺其他地方也沒問題啊uj5u.com熱心網友回復:
現在又變成了“dlg”有問題了uj5u.com熱心網友回復:
把有懷疑的部分 屏蔽了 試試看重點檢查strcpy memcpy p++ 等
uj5u.com熱心網友回復:
我試試uj5u.com熱心網友回復:
一般正常的stack around xxx 都是記憶體被破壞導致的.既然是對話框類自己生成的代碼部分出問題, 那么說明要么庫版本不對, 要么就是你后續的代碼, 破壞了那個變數所在的記憶體
uj5u.com熱心網友回復:
把這個變數InitCtrls 設定為靜態即可解決, 如 static char initCtrls[x];轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/55916.html
標籤:基礎類
上一篇:無法決議的外部符號
下一篇:關于二值影像的資料
