模态对话框不会作为最顶层窗口打开

时间:2015-04-16 08:17:57

标签: c++ windows mfc

我们公司正在销售两种不同的应用程序,这两种应用程序都是用C ++编写的,带有MFC 8.0

在这两个应用程序中,我们创建和打开模态对话框,如下所示:

dlg_options myOptions;
myOptions. DoModal();

这是我们近10年的方式。 我们有几百个客户拥有各种各样的Windows版本(XP到8.1),并且它总是以这种方式运行良好。

几个星期前,我们有一个客户,其中应用程序的模态对话框未作为最顶层窗口打开。他们留在后台,你必须手动激活它们才能将它们带到前面。

我无法解决这个问题但是在他的机器上(Win 8.1),客户已经安装了一些Windows的扩展,就像一个不同的开始菜单,所以我发现了一些责任。事实上,系统搞砸了。甚至有一个以上的开始菜单应用程序!重新安装Windows后一切都很好。

今天,我又遇到了同样的问题,不同的应用程序和不同的客户。他的系统又是Window 8.1,但这次我找不到任何Windows扩展。

两个系统都有一个共同点。您无法使用tab + alt键在应用程序之间切换。即使我们的软件没有运行,你也无法切换。当我们的应用程序运行时,您可以使用tab + alt将模式对话框从后台返回到前台。这非常好,但窗口应该从一开始就在前景中。

我不知道那里发生了什么,也没办法找到这个错误。 有没有人有类似的经历? 这是怎么回事?

2 个答案:

答案 0 :(得分:0)

我在这里找到了类似的问题:Focus on Modal Dialog (MFC)

对话框的父级似乎有问题。您可以尝试按如下方式声明:

CMyDlg dlg(this);

我希望它有所帮助。

答案 1 :(得分:-1)

您应该通过以下方式执行此操作:

SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);