我有一个包含无模式对话框的视图。
一切正常,除了与对话框交互发送消息以修改当前活动视图上的对象。当我切换到新视图或其他视图时,它会导致压缩,因为该视图中不存在该对象。
我想问一下,只要切换视图,如何关闭无模式对话框?
它应该在视图类或文档类中处理吗?
消息路由是Dialog - > send user defined message - > mainframe - > get current active view - >传递消息 - > view message handle接收消息
谢谢
并且,在视图的框架中执行它可能更有意义。所以...
在.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( );
}
我希望这是有道理的。