1

我有一个基于 MFC 对话框的应用程序。用户可以更改对话框的语言,我通过关闭现有对话框并打开另一个更改了语言的对话框来做到这一点。问题是任务栏中的效果是删除了一个图标,并在其位置创建了另一个相同的图标。如果我的应用程序的图标不是任务栏中的最后一个图标,它将被视为移动到任务栏图标集的末尾。

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

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

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

4

2 回答 2

1

使对话框成为另一个外部父窗口的子窗口。父级可以是对话框或任何其他类型的窗口;它将提供的只是标题栏。如果用户试图调整它的大小,它必须将调整大小的命令转发给对话框,否则你不需要在父窗口中做太多事情。

于 2012-10-29T18:48:54.307 回答
1

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

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

额外功能:通过这种设计,框架将为您处理诸如特定语言的加速器和菜单之类的事情,而您无需付出任何努力。

有关如何执行此操作的更多信息,请查看http://www.codeguru.com/cpp/wd/doc_view/viewmanagement/article.php/c3341/Multiple-Views-Using-SDI.htm

于 2012-11-09T05:01:27.627 回答