c – 在模态对话框处于活动状态时隐藏主MFC窗口?

我有一个原生的C MFC应用程序.它有一个基于CWnd的主窗口,用户操作可以创建一个模态对话框.当对话框处于活动状态时,我希望主窗口消失,对话框可见,主窗口的图标保留在任务栏中.

我怎么能做到这一点?

如果我隐藏主窗口(ShowWindow(SW_HIDE)),任务栏图标将消失.如果我最小化主窗口(SW_MINIMIZE),则图标仍然存在.但是,由于对话框由主窗口拥有,因此也会隐藏对话框.

创建对话框后,单击任务栏图标可使对话框可见.当然,我不想要求用户这样做.

即使我在对话框的OnInit处理程序中插入ShowWindow(SW_SHOW),对话框仍然不可见.但间谍显示其可见位已设置.如果我将SetWindowActive添加到OnInit也是如此.

我对改变UI设计不感兴趣.当对话框处于活动状态时,用户仅与其交互,并且对主窗口中的任何内容都不感兴趣.因此,主窗口应该消失.

在WinXP32下使用Windows VS2005.

最佳答案 好吧,在您创建对话框并将其显示为模态的代码块中,只要您将桌面窗口设置为对话框的父窗口,就可以对应用程序的主窗口(显示/隐藏)执行任何操作.通常,CDialog和衍生物的构造函数为父窗口采用NULL的默认参数,其中框架最终取代AfxGetMainWnd().而是将CWnd :: GetDesktopWindow()作为对话框的父级传递,然后您应该可以隐藏主窗口.但是,你仍然可能对任务栏有问题 – 但是我会让别人给出提示,因为我对此一无所知.

点赞