使子窗口出现在任务栏中

Posted

技术标签:

【中文标题】使子窗口出现在任务栏中【英文标题】:make the child window appears in taskbar 【发布时间】:2013-04-02 09:55:06 【问题描述】:

如何让子窗口出现在任务栏中,在win32程序中? (WS_EX_APPWINDOW 扩展样式,仅对顶层窗口有帮助)

【问题讨论】:

在任务栏中有一个 child 窗口没有任何意义。也许你的意思是一个拥有的窗口? 我写了一个文字处理器,有几个文件,它们是子窗口,我希望每个文件都出现在任务栏中 对于子窗口仍然没有意义。选择任务栏项目会做什么? Windows 不会知道要隐藏哪些其他子窗口或如何破坏子窗口的 z 顺序。只有您的应用程序知道如何做到这一点。给每个文档一个单独的任务栏缩略图不是更合适吗(就像 IE 对单独的选项卡所做的那样)?或者如果你真的想要,我想你可以创建隐藏的***窗口,在激活时显示相应的文档。 当我收到激活消息时,我将更改 Z 顺序。而且我不会将文件作为子窗口,因为它们的大小将始终是父客户区的大小,因此它们将使用父窗口的菜单。 但是子窗口不能得到WM_ACTIVATE消息。如果要模拟具有相应***窗口的子窗口,则实际模拟:制作与您的子窗口相对应的假***窗口。 【参考方案1】:

任务栏中通常只能出现弹出窗口,但您可以使用ITaskbarList 界面来执行此操作。

根据ITaskbarList::AddTab 的文档,

任何类型的窗口都可以添加到任务栏...

我自己没有尝试过,所以我不知道这是否适用于子窗口,但这是我能想到的唯一可能成功的方法。

更多信息请参见http://msdn.microsoft.com/en-us/library/windows/desktop/bb774652(v=vs.85).aspx。

【讨论】:

我的程序不知道ITaskbarList接口,需要添加什么代码才能使用? 您需要使用 CoCreateInstance 和 CLSID_TaskbarList / IID_ITaskbarList 创建一个实例。 我不知道COM,有没有这个API函数?

以上是关于使子窗口出现在任务栏中的主要内容,如果未能解决你的问题,请参考以下文章

win10打开程序不弹出窗口,只在任务栏显示

电脑不显示窗口怎么办

Win10系统下应用窗口任务栏居中效果

如何使子窗口位于最顶层?

Delphi 新建窗口在任务栏不显示

Electron 应用程序 - 如何在全屏模式下禁用/隐藏任务栏中的窗口