关闭子窗口父窗口同时关闭

hjfmail 2008-09-23 11:24:55
在父窗口CHotmanagerDlg中:
void CHotmanagerDlg::OnMaincontrol()
{
// TODO: Add your command handler code here
CMainControlDlg mcontrol;
mcontrol.DoModal();
}

子窗口CMainControlDlg中:

BOOL CMainControlDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
m_Tab.InsertItem(0,"1~15号");
m_Tab.InsertItem(1,"16~30号");
m_Tab.InsertItem(2,"PLC数据显示");

tab1.Create(IDD_TAB_ONE,GetDlgItem(IDC_TAB));
tab2.Create(IDD_TAB_TWO,GetDlgItem(IDC_TAB));
tab3.Create(IDD_TAB_THREE,GetDlgItem(IDC_TAB));
// 将子窗口显示在m_Tab范围内
CRect rs;
m_Tab.GetClientRect(rs);
rs.top+=30;
rs.bottom-=1;
rs.left+=4;
rs.right-=4;
tab1.MoveWindow(rs);
tab2.MoveWindow(rs);
tab3.MoveWindow(rs);
// 默认显示第一个子窗口
m_Tab.SetCurSel(0);
tab1.ShowWindow(SW_SHOW);

return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}

void CMainControlDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int nCurSel = m_Tab.GetCurSel();

switch(nCurSel)
{

case 0: // 显示子窗口1
tab1.ShowWindow(SW_SHOW);
tab2.ShowWindow(SW_HIDE);
tab3.ShowWindow(SW_HIDE);
break;
case 1: // 显示子窗口2
tab1.ShowWindow(SW_HIDE);
tab2.ShowWindow(SW_SHOW);
tab3.ShowWindow(SW_HIDE);
break;
case 2: // 显示子窗口3
tab1.ShowWindow(SW_HIDE);
tab2.ShowWindow(SW_HIDE);
tab3.ShowWindow(SW_SHOW);
break;
}

*pResult = 0;
}
程序运行时关闭子窗口的同时父窗口会自动关闭,为什么?不理解
...全文
782 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhtigt 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hjfmail 的回复:]

CMainControlDlg::CMainControlDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMainControlDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMainControlDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void CMainControlDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMainControlDlg)
DDX_Control(pDX, IDC_TAB, m_Ta…
[/Quote]

就这些代码吗?没实现其他功能?
zhtigt 2008-09-23
  • 打赏
  • 举报
回复
把你CMainControlDlg 下的代码贴出来
oysoft 2008-09-23
  • 打赏
  • 举报
回复
代码上没有看出问题啊,mcontrol.DoModal(); 不会引起父窗口关闭的.看看你其他代码是否有问题
jia_xiaoxin 2008-09-23
  • 打赏
  • 举报
回复
这样的问题一般是由创建控件引起的,看是否创建的控件在退出时没有被安全的释放.
hjfmail 2008-09-23
  • 打赏
  • 举报
回复

CMainControlDlg::CMainControlDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMainControlDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMainControlDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}


void CMainControlDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMainControlDlg)
DDX_Control(pDX, IDC_TAB, m_Tab);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMainControlDlg, CDialog)
//{{AFX_MSG_MAP(CMainControlDlg)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTab)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
jinlingzwp 2008-09-23
  • 打赏
  • 举报
回复
按常理讲不会吧...
rollrock1987 2008-09-23
  • 打赏
  • 举报
回复
CMainControlDlg mcontrol;
mcontrol.DoModal();


按理说不会出现你说的问题啊 你再把别的代码 贴出来看看

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧