我有一个有趣(但令人沮丧)的问题。我有一个使用全屏的应用程序(这是为了模拟第三方全屏 POS 应用程序)。
我的应用程序在全屏应用程序顶部显示一系列无模式对话框。它显示一个,隐藏它,然后显示下一个,隐藏它等等。第三次显示后,Windows 任务栏大约 1 秒后出现。我不知道为什么。
我已经剥离了我的代码,看看它是否在我的 OnNcActivate 处理程序(我用它来绘制我的皮肤窗口)中做的事情,但我不认为这是因为问题似乎与时间有关。我自己尝试过运行 Spy++ 以及在 m WindowProc 中转储消息,但我仍然看不到任何奇怪的东西可以给我任何线索。
我的日志中有一些 ID 为 0x36e 的消息,但我不知道它们应该是什么。我检查了各种消息 ID 列表,但找不到它们。它们不应该是我自己的任何消息 ID,因为 WM_USER 直到 0x400 才开始。
我知道我可以通过自动隐藏任务栏来解决这个问题,但我不能要求我们的客户将他们的任务栏配置为自动隐藏来解决我的问题。
任何想法为什么任务栏会出现在我的无模式对话框中?
编辑:我完全去掉了我自己绘制的 GUI 代码,我仍然有同样的问题。我可能是错的,但似乎当我首先调用 ShowWindow(SW_HIDE) 时,Windows 会尝试激活“另一个窗口”(如 MSDN 中所说)。我认为在这种情况下它会激活任务栏而不是 POS 应用程序。另一方面,如果我在第二个调用 ShowWindow( SW_HIDE ) 之前打开我的第二个窗口,那么它似乎表现得很好。
干杯火花