Ton*_*ile 5 c# windows wpf window
我正在研究一个派生自WPF Window类的类,它作为一个名为的应用程序工具栏窗口AppBarWindow.我已经能够找到各种WinForms实现,但没有WPF实现.
我有很多代码可以工作,但我需要知道用户何时开始在屏幕上拖动窗口以及何时停止,因为窗口的行为会有所不同.默认的WPF处理不太正确,所以我实现了自己的Window Procedure并使用HwndSource对象安装它.
我在工作中没有非客户区的应用程序中工作.在这种情况下,有一个LeftMouseButtonDown事件处理程序将标志设置为true,然后调用DragMove拖动窗口的方法.当该方法返回时,我将标志设置为false.一切正常.
但是我现在正在使用一个不使用该DragMove方法的通用类.我可以LeftMouseButtonDown为窗口添加另一个处理程序,但如果鼠标位于非客户区域,我不相信会被调用.
如何检测用户是否正在拖动窗口以及它们在这种情况下何时停止?
通过监视从Win32发送到我的窗口的消息,我已经找到了我需要知道的东西.
简而言之,Windows在窗口开始移动时发送以下消息:
WM_ENTERSIZEMOVE
接下来,Windows按顺序将以下消息发送到我的窗口过程:
接下来是一条代码为0xc310的消息.这在任何地方都没有记录,所以我猜这是由.NET/WPF内部使用的.
这些6条消息在鼠标移动时重复发送,窗口跟随后.
最后,当您释放鼠标左键时,Windows会发送:
所以我需要监听WM_ENTERSIZEMOVE和WM_EXITSIZEMOVE消息.
| 归档时间: |
|
| 查看次数: |
2768 次 |
| 最近记录: |