无法创建MDI程序,提示建立空文档失败,提示异常:winmdi.cpp line:513
无法创建MDI程序,提示建立空文档失败,提示错误:winmdi.cpp line:513
创建一个MDI程序,会提示建立空文档失败,但在此之前,则会先弹出提示,指出
winmdi.cpp在line513处错误,
与之相关的问题被困扰了好久,依旧没解决完全,路过的高手看看,指点一下,多谢了
------解决方案--------------------
又见楼主啊
pParentWnd->m_hWndMDIClient报告错误的话,就说明窗体没有建立完成嘛
------解决方案--------------------
你先把你在程序里初始化函数里增加的代码屏蔽掉,一点一点,每加一点就试一次.象这种情况有很多原因,有时在程序运行前先调用一个文件因为文件的目录不对也会这样,同样,在程序运行前也就是在APP里的加上建立窗口或视图时也会出这种问题
------解决方案--------------------
CMyTree和CPCSWView这两个视图很可能还没建立就执行OnCreateClient这个函数了,你在每个类的初始化函数里加上断点看看程序运行顺序是否正确,就是每个初始化函数时在这个函数里的所有的象视,窗口什么的都已建立完了.象这样就单步执行吧,看在哪个函数哪条语句出的问题
创建一个MDI程序,会提示建立空文档失败,但在此之前,则会先弹出提示,指出
winmdi.cpp在line513处错误,
- C/C++ code
跟踪下来,是在CMDIChildWnd::Create函数中 ASSERT(::IsWindow(pParentWnd->m_hWndMDIClient));语句错误 查看了pParentWnd的m_hWndMDIClient变量,为null,0x00000000 if (pParentWnd == NULL) { CWnd* pMainWnd = AfxGetThread()->m_pMainWnd; ASSERT(pMainWnd != NULL); ASSERT_KINDOF(CMDIFrameWnd, pMainWnd); pParentWnd = (CMDIFrameWnd*)pMainWnd; } ASSERT(::IsWindow(pParentWnd->m_hWndMDIClient)); 在APP的initinstance中,也是同样的建立方式 CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_PCSWTYPE, RUNTIME_CLASS(CPCSWDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CPCSWView)); AddDocTemplate(pDocTemplate); CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; m_pMainWnd = pMainFrame; // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew; // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; 而CPCSWView的OnInitUpdate则什么都不做,一样失败;
与之相关的问题被困扰了好久,依旧没解决完全,路过的高手看看,指点一下,多谢了
------解决方案--------------------
又见楼主啊
pParentWnd->m_hWndMDIClient报告错误的话,就说明窗体没有建立完成嘛
------解决方案--------------------
你先把你在程序里初始化函数里增加的代码屏蔽掉,一点一点,每加一点就试一次.象这种情况有很多原因,有时在程序运行前先调用一个文件因为文件的目录不对也会这样,同样,在程序运行前也就是在APP里的加上建立窗口或视图时也会出这种问题
------解决方案--------------------
CMyTree和CPCSWView这两个视图很可能还没建立就执行OnCreateClient这个函数了,你在每个类的初始化函数里加上断点看看程序运行顺序是否正确,就是每个初始化函数时在这个函数里的所有的象视,窗口什么的都已建立完了.象这样就单步执行吧,看在哪个函数哪条语句出的问题