gpt4 book ai didi

c# - 在 WndProc 中处理 AeroSnap 消息

转载 作者:太空狗 更新时间:2023-10-29 22:33:45 27 4
gpt4 key购买 nike

在我的 C# .NET 4 应用程序中,我使用 WndProc 来处理一些消息,这些消息主要涉及将应用程序大小调整为全屏和从全屏调整。

现在我只是处理 SC_MAXIMIZEWM_NCLBUTTONDBLCLK 以确定窗口的大小是否正在调整为最大化状态或从最大化状态调整(我知道我不需要 WndProc 来处理 SC_MAXIMIZE,但当我双击应用程序的标题栏时,Form_Resize 似乎没有触发 WM_NCLBUTTONDBLCLK 消息。

现在我注意到,如果我将窗口通过 Aero Snap 捕捉到屏幕顶部以最大化它,则不会发布上述消息,因此当通过 Aero Snap 最大化窗口时不会应用某些逻辑。我只想在窗口贴靠到屏幕顶部而不是右侧或左侧,或者窗口从最大化位置取消贴靠时处理消息。

我找不到任何与 Aero Snap 相关的窗口消息。有谁知道这些消息的引用资料吗?

最佳答案

我猜这里没有任何特殊消息; Aero 可能只是使用普通的 Win32 API - ShowWindow(SW_MAXIMIZE)和类似的。

对于 SC_ 消息,需要理解的是,它们是来自菜单的请求,要求窗口自行调整大小/恢复等,但这并不是更改窗口大小的唯一机制。可能发生的情况是,当窗口获得 SC_MAXIMIZE 时,DefWndProc 通过调用 ShowWindow(SW_MAXIMIZE) 来实现这一点。

你最好的就是听WM_SIZE窗口接收到的消息,无论是什么触发了大小更改:系统菜单、API 或其他方式。特别是,lParam 会让您知道窗口是最大化 (SIZE_MAXIMIZED) 还是恢复 (SIZE_RESTORED)。

关于c# - 在 WndProc 中处理 AeroSnap 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321549/

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