我在菜单项的一个子菜单函数里有这样对内存指针的引用操作,可是在2000下调试出现错误!
    CWnd *pParent=GetParent();
CMenu *pMenu=pParent->GetMenu();
CMenu *SubMenu=pMenu->GetSubMenu(0);
    SubMenu->CheckMenuItem(ID_LXC,MF_CHECKED);

解决方案 »

  1.   

    各个指针取得后,马上加一些accsert断言
    判断指针是否正确取到
      

  2.   

    你this指针的Parent可能不是你想要取到的指针。用CWnd *pParent=GetParent()->GetParent();CMenu *pMenu=pParent->GetMenu();或者直接CMenu *pMenu=this->GetMenu();估计你的菜单响应是加在Frame中,直接this->GetMenu就行了。
      

  3.   

    多试试吧。当你不确定当前指针和parent指针是什么的时候。
      

  4.   

    谢了52001214~~~~用This可以立即取得当前窗口的指针,你能帮我分析一下为什么回出现这样的错误吗?上面那个也应该可以获得当前窗口的指针呀????
      

  5.   

    有些是我自己的理解,不一定很正确。最好问高手确认下。我现在不写程序了,所以很多东西都忘了。和创建的过程有关系。窗口创建是先create Frame,然后在Frame中创建view。
    这时候对view的实例GetParent()取得的就是Frame的指针。而你是在CFrame的一个函数(CMyFrame::myfunction)中做操作。当函数执行的时候,this代表的是CFrame类型的一个实例。所以this就是你要的frame指针。如果你是在CMyView::myfuction中,this就代表View的一个实例。这时候this->GetParent()就是Frame的指针。