在VS除錯模式下,繼承自CPropertySheet的向導對話框,在點擊button彈出該屬性頁時,出現可能的寫入例外:
屬性頁添加原始碼如下:
IMPLEMENT_DYNAMIC(CSuperMaintenance, CPropertySheet)
CSuperMaintenance::CSuperMaintenance(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
AddPage(&m_SuperICcard);
AddPage(&m_SuperStart);
}
CSuperMaintenance::CSuperMaintenance(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
AddPage(&m_SuperICcard);
AddPage(&m_SuperStart);
}
CSuperMaintenance::~CSuperMaintenance()
{
}
button按鈕的回應函式如下:
ShowOperInfo(1,"超級維護 - 開始",0,0);
CSuperMaintenance sheet(_T(""));
sheet.SetWizardMode();
int iRet = sheet.DoModal();
ShowOperInfo(1,"超級維護 - 結束",0,0);
出現例外的地方

除錯了下,在sheet.DoModal();這句出現以上例外,實在搞不懂是什么例外,且只在屬性頁向導中出現,普通對話框的DoModal就沒有?
uj5u.com熱心網友回復:
出現例外的地方就是OnWndMsg函式
uj5u.com熱心網友回復:
有沒有人吶,來看一看吶,又沒有可能是我程式別的地方引起的?uj5u.com熱心網友回復:
點擊中斷, 貼出呼叫堆疊看看uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
如果再除錯下,不把例外打開,是可以運行的,功能也可以,在輸出的地方會列印可能的寫入例外,我感覺屬性向導的代碼是沒問題的,因為一直是這樣用的,但是又在除錯的時候除錯到DoModal()函式時出現了這個問題,簡直費解
uj5u.com熱心網友回復:

進到DoModal()函式中,除錯到這個地方出現上述例外
uj5u.com熱心網友回復:
為什么 要 DoModal ? DoModal 是阻塞的 怎么切換 page ?對話框中初始化例子:
CRect sheetRect;
GetWindowRect(sheetRect);
sheetRect.top+=40;
sheetRect.bottom-=80;
m_msgSheet = new CPropertySheet;
m_page2=new CPag2;
m_page2->Construct(CPag2::IDD);
// m_page2->Construct(IDD_PROPPAGE_SMALL);
m_msgSheet->AddPage(m_page2);
m_page3=new CPage3;
m_page3->Construct(IDD_PROPPAGE_MEDIUM);
m_msgSheet->AddPage(m_page3);
if(!m_msgSheet->Create(this,WS_CHILD|WS_BORDER|WS_VISIBLE))
{
DWORD err=GetLastError();
CString str;
str.Format("%d",err);
MessageBox(str);
}
else
{
// m_msgSheet->ModifyStyle(0,WS_TABSTOP);// no effect ?
// WS_EX_CONTROLPARENT Allows the user to navigate
// among the child windows of the window by using the TAB key.
// you will see "mainDlgButton1" in any page !
m_msgSheet->ModifyStyleEx(0,WS_EX_CONTROLPARENT);
m_msgSheet->MoveWindow(sheetRect.left,sheetRect.top,sheetRect.Width(),sheetRect.Height());
// m_msgSheet->GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);
// m_msgSheet->GetDlgItem(ID_APPLY_NOW)->ShowWindow(SW_HIDE);
TC_ITEM tc;
tc.mask = TCIF_TEXT;
tc.pszText = _T("修改成功");
m_msgSheet->GetTabControl()->SetItem(0, &tc);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/75346.html
標籤:基礎類
