我把一个CListBox类和一个CDialogBar上的一个listbox控件相关联,但用MoveWindow改变他的大小时,调试出现了错误: void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint) 

ASSERT(::IsWindow(m_hWnd));(错误点) if (m_pCtrlSite == NULL) 
::MoveWindow(m_hWnd, x, y, nWidth, nHeight, Repaint); 
else 
m_pCtrlSite->MoveWindow(x, y, nWidth, nHeight, bRepaint); 
} 请问各位大哥有人知道我哪里作错了吗? 

解决方案 »

  1.   

    你的代码一定是类似于这样的吧:
    void CYourDDlg::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);

    m_listbox.MoveWindow(......);
    }
    应该改成这样:
    void CYourDDlg::OnSize(UINT nType, int cx, int cy) 
    {
    CDialog::OnSize(nType, cx, cy);

    HWND hWnd = m_listbox.GetSafeHwnd();
    if((hWnd == NULL) || !(::IsWindow(hWnd)))
    return; m_listbox.MoveWindow(......);
    }
      

  2.   

    因为在对话框创建时,OnSize()会被调用到,而开始时,你的listbox还未创建完成。
      

  3.   

    上述代码中,m_listbox和这个CDialogBar上的一个listbox控件相关联的一个CListBox对象。