我们有一个C#应用程序,它包含模态和非模态窗口。用户可以打开几个非模态窗口并从其中一个打开模态窗口。
如果用户切换到另一个应用程序,然后通过单击任务栏中的一个非模态窗口(打开模态窗口的窗口除外)切换回我们的,非模态窗口将被激活,但是不接受输入,因为模态窗口是打开的,但是在其他窗口后面。
我们如何确保无论用户切换回哪个窗口,模态的窗口都是实际激活的窗口?例如,这是Microsoft Outlook展示的行为。
任何帮助都将不胜感激。
答案 0 :(得分:1)
它当然可能,但维护真的很烦人。我经常处理混合模态窗口和非模态窗口的应用程序。这是我的策略(不是100%全面证明)
维护重新排列窗口的代码非常烦人。我会敦促你尝试不混合模态窗口和非模态窗口。
修改强>
我忘了提到我使用WTL和很多本机win32函数。我还尝试创建具有父/子关系的窗口,以便键盘和鼠标消息尽可能多地反映到子窗口。