CPropertySheet作为子窗口控件(mfc高手入)
CPropertySheet作为子窗口控件,要注意什么吗?为什么对话框一旦切换到后台,窗口就死了。
BOOL CWindentDlg::OnInitDialog()
{
....
m_sheet.Create(this,WS_CHILD|WS_VISIBLE,WS_EX_NOPARENTNOTIFY);
....
}
死机时的堆栈:
user32.dll!77d186ff()
user32.dll!77d3063a()
user32.dll!77d3063a()
user32.dll!77d187eb()
user32.dll!77d3063a()
user32.dll!77d40494()
user32.dll!77d1b743()
user32.dll!77d3063a()
user32.dll!77d1b7ab()
user32.dll!77d2661f()
user32.dll!77d26675()
user32.dll!77d25310()
user32.dll!77d2759d()
user32.dll!77d275bf()
user32.dll!77d18709()
user32.dll!77d2759d()
user32.dll!77d2759d()
user32.dll!77d187eb()
user32.dll!77d2759d()
user32.dll!77d2759d()
> mfc71d.dll!ATL::CTraceFileAndLineInfo::operator()(unsigned long dwCategory=0, unsigned int nLevel=1243236, const char * pszFmt=0x77d1c00e, ...) 行163 + 0x27 C++
user32.dll!77d40494()
user32.dll!77d2759d()
user32.dll!77d1e366()
user32.dll!77d2759d()
mfc71d.dll!CWnd::DefWindowProcA(unsigned int nMsg=6, unsigned int wParam=0, long lParam=0) 行1024 + 0x20 C++
mfc71d.dll!CWnd::WindowProc(unsigned int message=6, unsigned int wParam=0, long lParam=0) 行1746 + 0x1a C++
mfc71d.dll!AfxCallWndProc(CWnd * pWnd=0x0012fca4, HWND__ * hWnd=0x000207d8, unsigned int nMsg=6, unsigned int wParam=0, long lParam=0) 行241 + 0x1a C++
mfc71d.dll!AfxWndProc(HWND__ * hWnd=0x000207d8, unsigned int nMsg=6, unsigned int wParam=0, long lParam=0) 行389 C++
mfc71d.dll!AfxWndProcBase(HWND__ * hWnd=0x000207d8, unsigned int nMsg=6, unsigned int wParam=0, long lParam=0) 行209 + 0x15 C++
user32.dll!77d18709()
user32.dll!77d187eb()
mfc71d.dll!CThreadSlotData::GetThreadValue(int nSlot=0) 行269 C++
user32.dll!77d1b368()
user32.dll!77d40494()
user32.dll!77d1b3b4()
ntdll.dll!7c92eae3()
user32.dll!77d1919b()
user32.dll!77d3ea85()
mfc71d.dll!AfxInternalPumpMessage() 行158 + 0x13 C++
mfc71d.dll!CWinThread::PumpMessage() 行916 C++
mfc71d.dll!AfxPumpMessage() 行195 + 0xb C++
mfc71d.dll!CWnd::RunModalLoop(unsigned long dwFlags=4) 行4566 + 0x5 C++
mfc71d.dll!CDialog::DoModal() 行527 + 0xc C++
windent.exe!CWindentApp::InitInstance() 行62 + 0xb C++
mfc71d.dll!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00141f45, int nCmdShow=1) 行39 + 0xb C++
windent.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00141f45, int nCmdShow=1) 行25 C++
windent.exe!WinMainCRTStartup() 行390 + 0x39 C
kernel32.dll!7c816d4f()
ntdll.dll!7c935b4f()
kernel32.dll!7c8399f3()
另外,既然在propertysheet中每个page只有在,切换到当前page时才创建,那么它是怎么保存页面上的内容的呢(文本框内的文本,复选框是否选中等),我没有使用ddx/ddv