保留任务栏图标,替换MFC对话框

时间:2012-10-25 14:16:37

标签: visual-c++ mfc taskbar

我有一个基于MFC对话框的应用程序。用户可以更改对话框的语言,我通过关闭现有对话框并使用更改的语言打开另一个对话框来完成此操作。问题是任务栏中的效果是删除了一个图标,并在其位置创建了另一个图标。如果我的应用程序的图标不是任务栏中的最后一个图标,则会将其视为已移至任务栏图标集的末尾。

我想在任务栏中保留图标的位置,而不是防止图标闪烁发生。我该怎么做?

应用程序必须支持从Windows XP到Windows 7的操作系统。

编辑:我接受答案的另一个问题是如何创建一个不可见的窗口,但仍然显示在任务栏中,以及如何将相关的窗口消息从该窗口转发到我的主窗口?

2 个答案:

答案 0 :(得分:1)

使对话框成为另一个外部父窗口的子对象。父对象可以是对话框或任何其他类型的窗口;所有它将提供的是标题栏。如果用户尝试调整大小,则必须将调整大小的命令转发到对话框,否则您不需要在父窗口中执行任何操作。

答案 1 :(得分:1)

为什么不用CFormView替换对话框呢?这样就有了一个包围对话框的框架窗口(嵌入在窗体视图中),它是拥有任务栏图标的框架窗口。

创建一个显示CFormView的SDI应用程序。在初始化时以默认语言(或用户先前选择的任何语言)显示对话框。当用户选择“更改语言”时选项,只需更改使用新表单显示的表单视图。

Bonus功能:使用此设计,框架将为您完成特定于语言的加速器和菜单之类的操作,而不需要您付出任何努力。

有关如何执行此操作的详情,请查看http://www.codeguru.com/cpp/w-d/doc_view/viewmanagement/article.php/c3341/Multiple-Views-Using-SDI.htm