如何让你的MDI MFC应用程序在TaskBar中显示一个实例?

时间:2012-11-06 17:08:47

标签: visual-c++ mfc mdi

我有一个MDI应用程序,当我点击新文档时,它会打开一个单独的标签。这将在Windows中的任务栏中创建另一个图标实例。有什么办法可以改变这种行为,以便任务栏只显示一个图标实例吗?

我知道一种方法是使用SDI并使用选项卡查看我的视图,但我希望将其保留为MDI。这甚至是可能的吗?

我正在尝试模仿这个名为'Dameware NT Utilities'的特定应用程序的视图: http://www.dameware.com/v3-dameware/media/DameWare/DW%20NTU/Carousel/DRS-Primary-medium.png?width=490&height=276&ext=.png

2 个答案:

答案 0 :(得分:4)

经过一天的挖掘后,我找到了解决方案。天哪,最终弄明白这件事感觉很好。无论如何这里是解决方案。

我只需要覆盖子框架的CanShowOnTaskBarTabs()方法以返回FALSE。这是类方法:

首先,在childframe.h文件中,将以下代码放在类声明

public:
     virtual BOOL CanShowOnTaskBarTabs();

然后在childframe.cpp文件中,将以下代码放在最底层:

BOOL CChildFrame::CanShowOnTaskBarTabs()
{
    return FALSE;
}

以下是有关此主题的更多信息:http://msdn.microsoft.com/en-us/library/ee256255(v=vs.100).aspx

答案 1 :(得分:0)

我有一个更简单的解决方案。在应用类InitInstance()方法上,只需调用

EnableTaskbarInteraction(FALSE);

在创建主框架之前。然后,当鼠标悬停在其任务栏图标上时,每个应用程序实例将获得一个视图,而不是每个seub-winodow视图将获得一个视图。