您的位置:程序门 -> vc/mfc -> 界面



onclosedocument()的问题,急求


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


onclosedocument()的问题,急求
发表于: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()
发表于:2007-03-07 10:57:051楼 得分:0
strflowpath不会为空吧。
发表于:2007-03-07 11:57:472楼 得分:0
不会,在open打开之后,已经判断pdoc是否为空了


快速检索

最新资讯
热门点击