首页 > 解决方案 > MFC如何在切换视图时关闭无模式对话框

问题描述

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

一切正常,除了与对话框交互发送消息以修改当前活动视图上的对象。当我切换到新视图或另一个视图时,它会导致崩溃,因为该对象不存在于该新视图中。

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

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

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

谢谢

标签: c++mfcvisual-c++-2010

解决方案


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

在.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( );
}

我希望这是有道理的。


推荐阅读