首页 / 知识
关于winapi:为什么单击子窗口并不总是将应用程序置于前台?
2023-04-14 15:38:00

Why does clicking a child window not always bring the application to the foreground?
当一个应用程序位于另一个应用程序之后 但是,有时候,对于我的某些对话框(和其他对话框),只有该对话框位于最前面;其余的应用程序则留在后面。
我看过Spy ++,对于可以正常工作的那些,我可以看到 我有一个示例,其中一个对话框通常会带来整个应用程序,而另一个对话框则不会。工作对话框和非工作对话框都具有相同的窗口样式,子样式,父项,所有者,本体。
简而言之,都是使用DialogBoxParam()创建的WS_POPUPWINDOW窗口, 还有其他人注意到Windows程序中的这种行为怪异吗?单击任务栏的按钮时,它会向应用程序发送哪些消息?谁负责确保应用程序的所有窗口都出现在前台? 在我的情况下,基本的父母身份是一个MDI框架……这是否以某种方式起作用? 我知道现在这已经很老了,但是我偶然发现了它,我知道了答案。 在您看到(并编写)的应用程序中,将对话框置于前台并没有将主窗口置于其中,开发人员只是忽略了指定对话框的所有者。 这既适用于模态窗口,如对话框和消息框,也适用于无模态窗口。设置无模式弹出窗口的所有者还可以使弹出窗口始终保持在其所有者之上。 在Win32 API中,用于弹出对话框或消息框的函数将所有者窗口作为参数:
类似地,在.NET WinForms中,可以指定所有者:
此外,在WinForms中,很容易设置无模式窗口的所有者:
或等效地:
在直接的WinAPI代码中,可以在创建窗口时设置无模式窗口的所有者:
或之后:
或(64位兼容)
请注意,MSDN关于SetWindowLong [Ptr]有以下说法:
这有点令人误解,因为这似乎暗示上面的最后两个片段是错误的。不是这样调用 当您单击任务栏图标时,Windows将向您的应用程序发送WM_ACTIVATE消息。 您确定您的代码将WM_ACTIVATE消息传递给DefWindowProc窗口过程进行处理吗? 对话框的父窗口设置是否正确? 发布此内容后,我启动了自己的Windows Forms应用程序,并重现了您描述的问题。我有两个对话框,一个正确地工作,另一个没有,并且我看不到任何直接原因就是它们的行为不同。如果发现的话,我会更新的。 雷蒙·陈你在哪里! |
最新内容
相关内容
linux命令和应用程序?
linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据Python可以做桌面应用程序吗
Python可以做桌面应用程序吗,平台,系统,较大,标准,培训,界面,桌面,文档,入门,开发者,python可以做桌面应用程序!目前比较主流的几个GUI平台:1关于用户界面:如何在上作为服务运行
关于用户界面:如何在上作为服务运行Windows GUI应用程序?,关于用户界面:如何在上作为服务运行Windows GUI应用程序?,远程登录,服务,应用关于.net:企业库应用程序块还是本地
关于.net:企业库应用程序块还是本地框架?,关于.net:企业库应用程序块还是本地框架?,框架,开发人员,类型,并已,Enterprise Library Applic关于.net:获取应用程序所需的程序集
关于.net:获取应用程序所需的程序集列表,关于.net:获取应用程序所需的程序集列表,文件,项目,框架,安装,Getting a list of assemblies关于部署:是否可以使用ClickOnce部
关于部署:是否可以使用ClickOnce部署本机Delphi应用程序,关于部署:是否可以使用ClickOnce部署本机Delphi应用程序,应用程序,用于,启动关于Web应用程序:在Haskell中编写We
关于Web应用程序:在Haskell中编写Web应用程序最简单的方法是什么?,关于Web应用程序:在Haskell中编写Web应用程序最简单的方法是什么?,用关于 actionscript 3:在 Flex 应用
关于 actionscript 3:在 Flex 应用程序中显示 HTML,关于 actionscript 3:在 Flex 应用程序中显示 HTML,显示,应用程序,富文本编辑器,自动升级是否是企业Web应用程序所
自动升级是否是企业Web应用程序所期望的现实功能?,自动升级是否是企业Web应用程序所期望的现实功能?,应用程序,企业,所做,内容,Is auto关于C#:如何将Cocoa应用程序设置为
关于C#:如何将Cocoa应用程序设置为默认Web浏览器?,关于C#:如何将Cocoa应用程序设置为默认Web浏览器?,应用程序,浏览器,默认,单击,How do关于计划的任务:计划Windows Mobile
关于计划的任务:计划Windows Mobile应用程序的运行,关于计划的任务:计划Windows Mobile应用程序的运行,电子邮件,后台,启动,执行,Sched关于ios:无效的iPhone应用程序二进
关于ios:无效的iPhone应用程序二进制文件,关于ios:无效的iPhone应用程序二进制文件,错误,应用程序,消息,上载,Invalid iPhone Applicat