非模态对话框create时出错
憨豆2 2011-10-10 01:39:24 我的程序是wtl对话框程序
在某些机器上有时会出现崩溃的情况,自己调试又没问题
用WinDbg分析崩溃的dmp文件有这样的信息:
STACK_TEXT:
0012f8e0 77d25bc9 006f7e80 447b0000 0012f910 user32!_GetChildControl+0xe
0012f8f0 77d23a26 006f7e80 00704d78 00000000 user32!_NextSibblingOrAncestor+0x36
0012f910 77d25c22 006f7e80 00704d78 00000000 user32!_NextControl+0x47
0012f930 77d25c6a 006f7e80 00704d78 00000006 user32!xxxRemoveDefaultButton+0x63
0012f948 77d23e3a 006f7e80 00000007 006f7e80 user32!xxxSaveDlgFocus+0x3e
0012f974 77d1b50c 00000000 00000006 00000000 user32!DefDlgProcWorker+0x2f5
0012f99c 7c92e473 0012f9ac 00000018 006f84b8 user32!__fnDWORD+0x24
0012f9c0 77d1da6c 77d259bf 000f0ff8 00240f62 ntdll!KiUserCallbackDispatcher+0x13
0012f9f0 77d1b50c 00000000 00000007 00000000 user32!NtUserSetFocus+0xc
0012fa18 7c92e473 0012fa28 00000018 006f84b8 user32!__fnDWORD+0x24
0012fa3c 77d1d83f 77d2c0a7 00240f62 0000005b ntdll!KiUserCallbackDispatcher+0x13
0012faec 77d24704 00000000 006f84b8 00000190 user32!NtUserCallHwndLock+0xc
0012fb10 77d27d98 10000000 10006430 000f0ff8 user32!CreateDialogIndirectParamAorW+0x33
0012fb3c 0040178e 10000000 0000006c 000f0ff8 user32!CreateDialogParamW+0x49
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 00000000 00000000 00000000 sgupdateapp+0x178e
在map文件中分析查找到出问题的代码为:
SG_WelcomeProcedure* pWelcomeProcedure = new SG_WelcomeProcedure;
SG_DownloadProcedure* pDownloadProcedure = new SG_DownloadProcedure;
SG_UpdateProcedure* pUpdateProcedure = new SG_UpdateProcedure;
SG_NoNeedUpdateProcedure* pNoNeedUpdateProcedure = new SG_NoNeedUpdateProcedure;
SG_CancelProcedure* pCancelProcedure = new SG_CancelProcedure;
pWelcomeProcedure->Create(m_hWnd);
pDownloadProcedure->Create(m_hWnd);
pUpdateProcedure->Create(m_hWnd);
pNoNeedUpdateProcedure->Create(m_hWnd);
pCancelProcedure->Create(m_hWnd);
是第二个子对话框Create时出错了,找了很久不知道是什么原因
这种在某些机器上有时出问题的代码太折磨人了,请大侠们帮帮忙看看,SG_DownloadProcedure这个子对话框上只有几个edit和一个列表控件一个进度条控件