m_TabCtrl.InsertItem(0, _T("图书查询"));
m_CheckDlg.Create(IDD_DIALOG_CHECK, GetDlgItem(IDC_TAB));
CWnd *pWnd = m_CheckDlg.GetParent();
if (pWnd != &m_TabCtrl)
{
AfxMessageBox("Error");
exit(0);
}按理说,这段程序不可能退出,因为m_CheckDlg的父窗口设成了m_TabCtrl(这个控件和IDC_TAB是关联的,这一点已经验证)。为啥到最后m_CheckDlg的父窗口变成了主程窗口?

解决方案 »

  1.   

    m_CheckDlg
    的父亲是谁啊不曾看见你setparent啊!
      

  2.   

    m_CheckDlg.Create(IDD_DIALOG_CHECK, GetDlgItem(IDC_TAB));
    1. GetDlgItem(IDC_TAB)=&m_TabCtrl;
    2. m_CheckDlg 只要Create 成功 ,以下代码 是 多余的
      

  3.   

    if (pWnd != &m_TabCtrl)
    你确定这个if语句没问题吗?
    我感觉if 永远为真,因为:返回的指针可能是临时的,不应保存以供将来使用。
    CWnd里面只是包含了一个HWND,所以一般用HWND来比较,而不是指针。