dre*_*010 5 c# winapi window-messages aero
在我的C#.NET 4应用程序中,我WndProc用来处理一些消息,主要是处理从全屏调整应用程序的大小.
现在我只是处理SC_MAXIMIZE并WM_NCLBUTTONDBLCLK确定窗口是否正在调整大小或从最大化状态调整(我知道我不需要WndProc来处理SC_MAXIMIZE,但是当我双击时,Form_Resize似乎没有触发WM_NCLBUTTONDBLCLK消息应用程序的标题栏.
现在我注意到,如果我将Aero Snap窗口移到屏幕顶部以使其最大化,则上述消息都不会发布,因此当通过Aero Snap最大化窗口时,不会应用某些逻辑.我只想处理消息,如果窗口被捕捉到屏幕的顶部而不是右边或左边,或者窗口是否从最大化位置取消.
我找不到任何与Aero Snap相关的窗口消息.有谁知道这些消息的任何参考?
我猜这里没有任何特别的消息; Aero可能只使用普通的Win32 API - ShowWindow(SW_MAXIMIZE)等.
要理解SC_消息的是那些是来自菜单的请求,要求窗口调整大小/恢复/ etc本身,但这不是改变窗口大小的唯一机制.可能发生的是当窗口获得SC_MAXIMIZE时,DefWndProc通过调用ShowWindow(SW_MAXIMIZE)来实现它.
最好的方法是收听窗口收到的WM_SIZE消息,无论触发大小更改的是什么:系统菜单,API或其他方法.特别是,如果窗口最大化(SIZE_MAXIMIZED)或恢复(SIZE_RESTORED),lParam将通知您.
| 归档时间: |
|
| 查看次数: |
4844 次 |
| 最近记录: |