| 发表于:2007-03-07 10:24:11 楼主 |
在一函数内,自动以隐藏方式打开文档,处理完数据后,自动关闭。在本人机器上没什么问题,但在同事的机器上,会出现异常,经调试,发现是调用onclosedocument()的时候发生异常,在之前如果加一个messagebox就没有问题,俺完全不知道是怎么回事拉,那位大虾帮俺看看? 问题代码段: g_bshowwindow = false; cdocument* pdoc = afxgetapp()-> opendocumentfile(strflowpath); ... pdoc-> onclosedocument(); cchildframe的activateframe: void cchildframe::activateframe(int ncmdshow) { if( getmdiframe()-> mdigetactive() != null ) { if( g_bshowwindow ) { cmdichildwnd::activateframe(ncmdshow); } else { cinitialmodule::setshowwindow( true ); cmdichildwnd::activateframe( sw_hide ); } } else { cmdichildwnd::activateframe(sw_showmaximized); } } 出错时的栈: ntdll! 77f662ec() _crtdbgreport(int 2, const char * 0x5f4ccdd0 this_file, int 341, const char * 0x00000000, const char * 0x00000000) line 353 afxassertfailedline(const char * 0x5f4ccdd0 this_file, int 341) line 39 + 20 bytes cmdiframewnd::mdigetactive(int * 0x00000000) line 341 + 38 bytes cmdiframewnd::getactiveframe() line 266 + 10 bytes cframewnd::onactivate(unsigned int 0, cwnd * 0x0059a9a0 {ctempwnd hwnd=0x0187047e}, int 0) line 987 + 14 bytes cwnd::onwndmsg(unsigned int 6, unsigned int 0, long 25625726, long * 0x0012a49c) line 1902 cwnd::windowproc(unsigned int 6, unsigned int 0, long 25625726) line 1585 + 30 bytes afxcallwndproc(cwnd * 0x00346df0 {cwnd hwnd=0x007b0408}, hwnd__ * 0x007b0408, unsigned int 6, unsigned int 0, long 25625726) line 215 + 26 bytes afxwndproc(hwnd__ * 0x007b0408, unsigned int 6, unsigned int 0, long 25625726) line 368 afxwndprocbase(hwnd__ * 0x007b0408, unsigned int 6, unsigned int 0, long 25625726) line 220 + 21 bytes user32! 77e42672() user32! 77e41024() ntdll! 77f663f3() user32! 77e62926() user32! 77e5740a() user32! 77e5b574() user32! 77e4357a() user32! 77e4c24c() _afxactivationwndproc(hwnd__ * 0x0187047e, unsigned int 272, unsigned int 2950262, long 1225096) line 404 + 26 bytes user32! 77e433c0() user32! 77e58a3a() user32! 77e5db77() user32! 77e625a5() user32! 77e62f7e() user32! 77e63143() user32! 77e7bdad() user32! 77e7bd34() __crtmessageboxa(const char * 0x0012b274, const char * 0x102579a0 `string ', unsigned int 73746) line 65 crtmessagewindow(int 2, const char * 0x5f4ccdd0 this_file, const char * 0x0012c3a8, const char * 0x00000000, const char * 0x0012e3cc) line 520 + 22 bytes _crtdbgreport(int 2, const char * 0x5f4ccdd0 this_file, int 341, const char * 0x00000000, const char * 0x00000000) line 419 + 76 bytes afxassertfailedline(const char * 0x5f4ccdd0 this_file, int 341) line 39 + 20 bytes cmdiframewnd::mdigetactive(int * 0x00000000) line 341 + 38 bytes cmdiframewnd::onupdateframetitle(int 1) line 1072 + 16 bytes cmdichildwnd::destroywindow() line 463 cdocument::onclosedocument() line 801 ============================以上开始调用onclosedocument flowcharter! 00460f0b() flowcharter! 004bcd3f() _afxdispatchcmdmsg(ccmdtarget * 0x0058fd00 {ccmdtarget}, unsigned int 33821, int 0, void (void)* 0x00402a9f, void * 0x00000000, unsigned int 12, afx_cmdhandlerinfo * 0x00000000) line 88 ccmdtarget::oncmdmsg(unsigned int 33821, int 0, void * 0x00000000, afx_cmdhandlerinfo * 0x00000000) line 302 + 39 bytes cview::oncmdmsg(unsigned int 33821, int 0, void * 0x00000000, afx_cmdhandlerinfo * 0x00000000) line 162 + 24 bytes cframewnd::oncmdmsg(unsigned int 33821, int 0, void * 0x00000000, afx_cmdhandlerinfo * 0x00000000) line 894 + 33 bytes cwnd::oncommand(unsigned int 33821, long 0) line 2088 cframewnd::oncommand(unsigned int 33821, long 0) line 321 cwnd::onwndmsg(unsigned int 273, unsigned int 33821, long 0, long * 0x0012fbc4) line 1597 + 28 bytes cwnd::windowproc(unsigned int 273, unsigned int 33821, long 0) line 1585 + 30 bytes afxcallwndproc(cwnd * 0x0058e0d0 {cwnd hwnd=0x00040462}, hwnd__ * 0x00040462, unsigned int 273, unsigned int 33821, long 0) line 215 + 26 bytes cmdiframewnd::oncommand(unsigned int 33821, long 0) line 55 + 35 bytes cwnd::onwndmsg(unsigned int 273, unsigned int 33821, long 0, long * 0x0012fd8c) line 1597 + 28 bytes cwnd::windowproc(unsigned int 273, unsigned int 33821, long 0) line 1585 + 30 bytes afxcallwndproc(cwnd * 0x00346df0 {cwnd hwnd=0x007b0408}, hwnd__ * 0x007b0408, unsigned int 273, unsigned int 33821, long 0) line 215 + 26 bytes afxwndproc(hwnd__ * 0x007b0408, unsigned int 273, unsigned int 33821, long 0) line 368 afxwndprocbase(hwnd__ * 0x007b0408, unsigned int 273, unsigned int 33821, long 0) line 220 + 21 bytes user32! 77e412ae() user32! 77e428da() cwinthread::run() line 487 + 11 bytes cwinapp::run() line 400 afxwinmain(hinstance__ * 0x00400000, hinstance__ * 0x00000000, char * 0x001337c4, int 1) line 49 + 11 bytes flowcharter! 004c1368() flowcharter! 004c0603() kernel32! 77eebd1e() |
|
|
|
|