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

问题描述 投票:0回答:1

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

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

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

它应该在视图类或文档类中处理吗?

消息路由是Dialog - > send user defined message - > mainframe - > get current active view - >传递消息 - > view message handle接收消息

谢谢

c++ mfc visual-c++-2010
1个回答
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( );
}

我希望这是有道理的。

© www.soinside.com 2019 - 2024. All rights reserved.