我试着写一个多文档的记事本,遇到了一个问题。我在主程序的OnFileNew事件中添另了如下的代码:
if(m_pDocManager != NULL)
{
CWinApp::OnFileNew();
CChildFrame *mdiChild = (CChildFrame*)(((CMainFrame*)m_pMainWnd)->MDIGetActive());
int iIndex = ((CMainFrame*)m_pMainWnd)->m_wndFileBar.AddButton(mdiChild->GetActiveDocument()->GetTitle()); //设置文档名称Tab控件上的名字         mdiChild->m_iID = iIndex;
m_ptrChild.AddHead(mdiChild); //将这个子窗口添加到list中
}
其中中的m_wndFileBar是我自己写的一个控件,功能和TabCtrl一样,用于罗列打开的所有的文档,以便自由切换。mdiChild->m_iID 这个m_iID是这个子窗口的索引号。(必须)现在问题就出在这个m_iID的赋值上。会报告MFC AFX access vialotion错误。请教各位高手,如何解决这一问题。

解决方案 »

  1.   

    我觉得应该在app文件里记录,因为它是不会发生变化的
      

  2.   

    如何知道关闭了的窗口的ID号?因为这个ID号我是必须要用到。我自己的一个控件里面必须用到这样一个唯一的ID号。如果在app里记录的话,可以使用一个数组。但是这样每关闭一个窗口,就必须要从第一个开始搜索,用一个指定的值去搜索,速度会很慢的。