gpt4 book ai didi

winapi - 创建后更改窗口的类?

转载 作者:行者123 更新时间:2023-12-04 02:29:01 26 4
gpt4 key购买 nike

如何在创建后更改 win32 窗口的窗口类?我问是出于好奇,因为我发现 Spy++ 来自 Stardock 的这些奇特的桌面定制工具之一正是这样做的。

免责声明(遗憾的是现在是必要的):我已经搜索了文档但找不到任何东西。我知道这可能不打算完成,可能会导致很多奇怪的副作用,并且不应该在生产应用程序中完成。尽管如此,我还是想知道他们是如何做到的。

编辑:背景故事,可能很有趣。

我在玩 Stardock 的 ModernMix,它允许您在桌面上以窗口模式使用 Metro/Modern/Windows Store 应用程序,我想弄清楚它们是如何做到的。我很快发现现代应用程序只能在常规的全屏 Win32 窗口中运行!您实际上可以将窗口样式更改为取消最大化并给它一个标题栏等。但是,至少有一件事不起作用:您不能在窗口上使用 aero 捕捉,并且不能在屏幕顶部使用热边缘仍然将窗口视为现代应用程序。这个问题在 ModernMix 中不存在,所以我一直在寻找差异。

我不断地在我的应用程序中显示各种调试信息,包括 HWND、窗口样式,还使用 ​​Spy++ 检查窗口。事实证明,当 ModernMix 取消最大化窗口时,它的类从 Windows.UI.Core.CoreWindow 变为 Windows.UI.Core.CoreFramedWindow。然而,我窗口中显示的 HWND 并没有改变!所以我错误地得出结论,ModernMix 通过更改类摆脱了窗口的特殊行为......但事实证明,ModernMix 只是创建了另一个顶层,并以某种方式将原始窗口的内容重定向到新的顶层(至少看起来是这样的)喜欢)。

(我还是把问题留在这里,哪怕只是作为一个做不到的引用。)

最佳答案

无法更改现有窗口的类。唯一的选择是销毁原始窗口并使用不同的类创建一个新窗口。

关于winapi - 创建后更改窗口的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21867196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com