为啥显示自绘无模对话框时会出现任务栏? .. 有时?

     2023-02-16     187

关键词:

【中文标题】为啥显示自绘无模对话框时会出现任务栏? .. 有时?【英文标题】:Why does the task bar appear when I display a self-drawn modeless dialog? .. sometimes?为什么显示自绘无模对话框时会出现任务栏? .. 有时? 【发布时间】:2011-09-01 23:25:56 【问题描述】:

我有一个有趣(但令人沮丧)的问题。我有一个使用全屏的应用程序(这是为了模拟第三方全屏 POS 应用程序)。

我的应用程序在全屏应用程序的顶部显示一系列无模式对话框。它显示一个,隐藏它,然后显示下一个,隐藏它等等。第三次显示后,Windows 任务栏大约 1 秒后出现。我不知道为什么。

我已经剥离了我的代码,以查看它是否在我的 OnNcActivate 处理程序(我用它来绘制我的蒙皮窗口)中做的事情,但我不认为这是因为问题似乎与时间有关.我自己尝试过运行 Spy++ 以及在 m WindowProc 中转储消息,但我仍然看不到任何奇怪的东西可以给我任何线索。

我的日志中有一些 ID 为 0x36e 的消息,但我不知道它们应该是什么。我检查了各种消息 ID 列表,但找不到它们。它们不应该是我自己的任何消息 ID,因为 WM_USER 直到 0x400 才开始。

我知道我可以通过自动隐藏任务栏来解决这个问题,但我不能要求我们的客户将他们的任务栏配置为自动隐藏来解决我的问题。

任何想法为什么任务栏会出现在我的非模式对话框中?

编辑:我完全去掉了我自己绘制的 GUI 代码,但我仍然遇到同样的问题。我可能是错的,但似乎当我首先调用 ShowWindow(SW_HIDE) 时,Windows 会尝试激活“另一个窗口”(如 MSDN 中所说)。我认为在这种情况下它会激活任务栏而不是 POS 应用程序。另一方面,如果我在第二个调用 ShowWindow( SW_HIDE ) 之前打开我的第二个窗口,那么它似乎表现得很好。

干杯 闪闪发光的

【问题讨论】:

没错。焦点需要转到某处。要让 Windows 选择您的主窗口,请将其设置为无模式对话框的所有者。这篇文章是关于模态窗口和启用的,但原理是一样的。 blogs.msdn.com/b/oldnewthing/archive/2004/02/27/81155.aspx 这很有意义,但是如果您实际上并不拥有“主窗口”——在我的例子中是 POS 应用程序,该怎么办。我们的软件可以在许多不同的 POS 应用程序上运行,所以我真的没有办法找出 POS 的窗口句柄是什么。我知道如何针对特定的 POS 执行此操作,但我无法预测未来的 POS 应用程序行为等。 肯定有办法断开应用程序与桌面的连接?我确实有一个主对话框窗口,它也是无模式的。我抱怨的所有弹出对话框都有(隐藏的)“主对话框”窗口作为它们的所有者。但是,如果我按热键来显示主对话框,那么每次都会出现任务栏和主对话框窗口。当然可以创建与任务栏/桌面没有关联的无模式对话框?? Windows 不知道“嘿,这个 POS 窗口很特别,当没有明显的焦点位置时应该获得焦点。” 有人 需要说“这个窗口接下来应该获得焦点”。而那个人就是你。直观地说,您如何识别 POS 窗口?也许您将其识别为在显示对话框之前具有焦点的窗口。也许您认为它是最顶层的全屏窗口。也许您认为它是属于 POS.EXE 的唯一可见窗口。无论你的方法是什么,都将其转换为代码。 窗口管理器寻找一个窗口并选择一些非全屏窗口。任务栏显示“由于焦点不在全屏窗口上,我会出现”。您的窗口未与任务栏“关联”。任务栏只是遵循其规则。如果你想脱离桌面,你可以创建自己的桌面,但你会发现这比它的价值要复杂得多。 【参考方案1】:

经过长时间的讨论,我得出结论,DestroyWindow 不是问题所在。最后我发现显示一个对话框..单击POS,然后单击有时会出现任务栏的对话框。我花了整整一周的时间试图找到所有这一切的原因,但无济于事。我认为将 POS 窗口指定为所有者可以解决问题 - 但事实并非如此。最后,我的问题的解决方案是在显示我的对话框之前确定任务栏是否完全被遮挡。如果是,我会在显示对话框期间隐藏任务栏(将其位置设置为 SW_HIDE),然后在关闭对话框时将其设置为 SW_SHOW。任务栏不再弹出并烦人。对于其他人的应用程序而言,这可能不是一个出色的解决方案,但对于我们的客户来说却是完美的。

【讨论】:

为啥任务栏没有图标

...控制面板,在控制面板中双击“输入法”图标,在弹出的对话框下部,有一个“启动任务栏上的指示器”的选项,看看它前面的选择框内有没有一个对勾,没有就选上,然后用鼠标单击下方的“确定”按钮,输入法图标就会失而... 查看详情

为啥 Cast V3 应用程序有时无法更改音量

...量搜索栏拖到某个位置,例如:max通过关闭按钮关闭演员对话框再次打开演员对话框搜索栏未设置到最后一个位置Youtube/Cast-Sample应用也出现了同样的问题。那里 查看详情

单击下载链接并出现文件保存对话框时会触发啥事件?

】单击下载链接并出现文件保存对话框时会触发啥事件?【英文标题】:Whateventisfiredwhenclickingonadownloadlinkandthefilesavingdialogappears?单击下载链接并出现文件保存对话框时会触发什么事件?【发布时间】:2016-11-0412:18:35【问题描述... 查看详情

执行代码时有时不显示对话框片段

】执行代码时有时不显示对话框片段【英文标题】:DialogFragmentsnotshowingsometimeswhilethecodeisbeingexecuted【发布时间】:2017-12-2920:16:42【问题描述】:我在应用程序中有多个对话框片段。当屏幕变暗时,一次又一次没有显示对话框,... 查看详情

为啥用 Plotly 显示热图时会出现这个问题?

】为啥用Plotly显示热图时会出现这个问题?【英文标题】:WhythisproblemwhenshowingtheheatmapwithPlotly?为什么用Plotly显示热图时会出现这个问题?【发布时间】:2020-10-2013:43:39【问题描述】:我想用plotly创建一个简单的带注释的热图。... 查看详情

java示例代码_使JOptionPane对话框在任务栏上显示为任务

java示例代码_使JOptionPane对话框在任务栏上显示为任务 查看详情

如何使 JOptionPane 对话框在任务栏上显示为任务?

】如何使JOptionPane对话框在任务栏上显示为任务?【英文标题】:HowcanImakeJOptionPanedialogsshowupasataskonthetaskbar?【发布时间】:2010-10-0706:28:32【问题描述】:编辑:问题遵循横向规则;我自己的答案在它之前。在OscarReyes的帮助下,... 查看详情

MFC 对话框显示在任务栏中

】MFC对话框显示在任务栏中【英文标题】:MFCdialogshowsintaskbar【发布时间】:2018-08-2013:28:15【问题描述】:我有一个使用来自两个DLL的对话框的应用程序。两个DLL中的对话框代码几乎相同:两个对话框在RC文件中具有相同的样式... 查看详情

客户应用程序图标未显示在任务栏中 - 为啥?

】客户应用程序图标未显示在任务栏中-为啥?【英文标题】:Customerapplicationiconisnotshowingintaskbar-why?客户应用程序图标未显示在任务栏中-为什么?【发布时间】:2014-02-0908:54:47【问题描述】:情况:用VS2012实现一个WPF应用程序,... 查看详情

cdr软件为啥有时打的大写字母,确定后自动变成小写了?

...中“工具目录下的选项”(快捷键Ctrl+J),进入选项设置对话框,点击工作区-文本-快速更正。4、在对话框右侧的“快速更正”子面板中勾选“改写两个缩写,连续大写”命令。5、确定后,再次输入连续大写字母,就不会自动... 查看详情

如何从任务栏菜单应用程序 Python/Pyside2 for MacOS 显示 Hello World 对话框

...如何从任务栏菜单应用程序Python/Pyside2forMacOS显示HelloWorld对话框【英文标题】:HowtodisplayHelloWorlddialogfromTaskBarMenuApplicationPython/Pyside2forMacOS【发布时间】:2019-01-1614:13:17【问题描述】:首先创建一个虚拟的“helloworld”对话框/窗口... 查看详情

Heroku - 为啥在向 Heroku 推送版本时会出现错误 R12(退出超时)?

】Heroku-为啥在向Heroku推送版本时会出现错误R12(退出超时)?【英文标题】:Heroku-whywouldIgetErrorR12(Exittimeout)whenpushingareleasetoHeroku?Heroku-为什么在向Heroku推送版本时会出现错误R12(退出超时)?【发布时间】:2015-01-1902:30:57【问... 查看详情

从任务栏中单击应用程序主窗口未显示(将无模式对话框转换为模态)

】从任务栏中单击应用程序主窗口未显示(将无模式对话框转换为模态)【英文标题】:ClickonApplicationMainWindowfromTaskbarisnotshowing(ConvertedModelessdialogtoModal)【发布时间】:2015-06-0118:05:16【问题描述】:我的MFC应用程序是一个MDI应用... 查看详情

win10桌面右键为啥不能显示svn

1、如果是没有图标任务栏也不见了,这种情况一般都是Windows资源管理器崩溃了,需要重新开启它就可以了。2、按键盘上的组合键【Ctrl+Alt+Delete】然后就可以看到如下图所示的界面,再点击【任务管理器】。3、再看到任务管理... 查看详情

为啥 DataGrip 有时只显示查询执行时间?

】为啥DataGrip有时只显示查询执行时间?【英文标题】:WhydoesDataGriponlyshowqueryexecutiontimesometimes?为什么DataGrip有时只显示查询执行时间?【发布时间】:2018-10-0913:31:50【问题描述】:根据thisquestion(以及在cmets中发布的链接,DataGr... 查看详情

怎么把怎么把电脑上面显示窗口的框子从下面弄到下面来

...,选择弹出菜单的属性。2、“任务栏和开始菜单属性”对话框里可以看到下拉选择框,这里就可以设置任务栏在屏幕上的位置。3、在“任务栏和开始菜单属性”对话框里,将屏幕上的任务栏位置选择为底部,然后点击确定。4、... 查看详情

为啥屏幕会出现闪屏

...,选择“设置”选项卡,再单击“高级”按钮,在弹出的对话框中选择“监视器”选项卡,选择“屏幕刷新率”为“60赫兹”。如果还会闪烁,则再改成其它的“屏幕刷新率”:4、如果是忽然间出现闪烁现象,可以先检查下显示... 查看详情

win10任务栏搜索不能用了怎么解决

...10任务栏上没有搜索框,只要右键任务栏,在Cortana中勾选显示搜索框就可以了。但是有时候Win10系统Cortana选项中没有“显示搜索框”这个时候该怎么办呢?原因分析:  对于出现这样情况的用户,小编进行了分析,多半... 查看详情