c++ - MFC如何在切换视图时关闭无模式对话框
问题描述
我有一个包含无模式对话框的视图。
一切正常,除了与对话框交互发送消息以修改当前活动视图上的对象。当我切换到新视图或另一个视图时,它会导致崩溃,因为该对象不存在于该新视图中。
我想问一下切换视图时如何关闭无模式对话框?
应该在视图类还是文档类中处理?
消息路径是对话框 -> 发送用户定义消息 -> 主机 -> 获取当前活动视图 -> 传递消息 -> 查看消息句柄 接收消息
谢谢
解决方案
而且,在视图框架中执行此操作可能更有意义。所以...
在.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( );
}
我希望这是有道理的。
推荐阅读
- xtext - 扩展 Xbase 类型系统
- java - 在 LWJGL 中提高渲染性能的最佳方法
- r - 从字符串转换为逻辑时如何明确警告会产生 NA
- javascript - Codeigniter + Biostall 的 Google Maps API v3:不同标记中的不同信息窗口
- python - Python:杀死子进程不起作用(错误的PID)
- android - 'com.android.support:appcompat-v7:27.1.1' 与 com.google.android.gms:play-services-maps:15.0.1 冲突?
- c++ - 在现代 C++ 中是否可以将字符串文字作为参数传递给 C++ 模板?
- javascript - Chrome 扩展原生消息传递主机立即断开连接
- python - Pandas 按日期范围分组和多列的不同计算
- visual-studio - 替换为从文件读取或从代码生成的值?