首先是有个窗口Unhandled exception in MCECS-D.exe (MFC42D.dll): 0xc0000005: Access Violation.具体出错地点:int CWnd::GetWindowText(LPTSTR lpszString, int nMaxCount) const ASSERT(::IsWindow(m_hWnd));//这里出错切换一次tab之后,就会在上面地方出错,出错时:
this 0x00000000 {CWnd hWnd=???}p.s.上述的tab是bcg里的tabview

解决方案 »

  1.   

    补充一下:我在view中的edit加了OnKillfocusEditXXX的处理函数,就出现上面的情况了
      

  2.   

    列一例:
    void CCtrlParmView::OnKillfocusEditNN() 
    {
    // TODO: Add your control notification handler code here
    GetDlgItem(IDC_EDIT_NN)->GetWindowText(m_relayStr,50);
    m_NN = atoi(m_relayStr); //ascii string convert to int
    ALL.NN = m_NN;

    }
    全都是这样的处理函数
      

  3.   

    你可以在GetWindowText前判断一下m_relayStr.m_hWnd,或者把GetWindowText放到其他事件中
    void CCtrlParmView::OnKillfocusEditNN() 
    {
             if (!::IsWindow(m_relayStr.m_hWnd)) return; GetDlgItem(IDC_EDIT_NN)->GetWindowText(m_relayStr,50);
    m_NN = atoi(m_relayStr); //ascii string convert to int
    ALL.NN = m_NN;

    }
      

  4.   

    我想起一件事,是否是我的edit控件没有subclass到FormView(edit在Formview中)?所以到了CWnd::GetWindowText就没有了m_hWnd?
      

  5.   

    对不起大家,原来是 GetDlgItem(IDC_EDIT_NN)->GetWindowText(m_relayStr,50);语句中
    我把IDC_EDIT_NN这个id写错了。
      

  6.   

    有个小问题,up都有分。
    我怎么让form上的edit之类的控件disable?是要运行时设置
      

  7.   

    用OnUpdateCommandUI就可以了,pCmdUI->m_pOther就是窗口指针,干什么都可以;不过要先处理一个MFC没有公开的消息WM_KICKIDLE
    参见http://www.csdn.net/Develop/Read_Article.asp?Id=9490
      

  8.   

    OnUpdateCommandUI是谁的处理函数? 抱歉