MFC如何在切换视图时关闭无模式对话框

时间:2019-03-20 21:07:33

标签: c++ mfc visual-c++-2010

我有一个包含无模式对话框的视图。

一切正常,但与对话框的交互会发送一条消息,以修改当前活动视图上的对象。当我切换到新视图或其他视图时,它会导致暗恋,因为该对象在该新视图中不存在。

我想问一下切换视图时如何关闭无模式对话框?

应该在视图类还是文档类中处理?

消息路由为对话框->发送用户定义的消息->主机->获取当前活动视图->传递消息->视图消息句柄接收消息

谢谢

1 个答案:

答案 0 :(得分:0)

而且,在视图框架中执行此操作可能更有意义。所以...

在.h中:

class MyFrm: public CFrameWnd
{
    MyDialog dlg;
};

在.cpp中:

MyFrm::MyFrm( )
    :dlg( this )
}

void MyFrm::OnInitialUpdate()
{
    tagDlg.Create( this );
    tagDlg.ShowWindow( SW_NORMAL );
}

如果要切换对话框,请说一个菜单项作为开关。除了在OnInitialUpdate中创建它,您还可以:

void MyFrm::OnToggleDlg( )
{
    if( ! dlg.GetSafeHwnd( ) )
    {
        dlg.Create( this );
        dlg.ShowWindow( SW_NORMAL );
    }
    else
        dlg.DestroyWindow( );
}

我希望这是有道理的。