是否正在拖动外部窗口?
Posted
技术标签:
【中文标题】是否正在拖动外部窗口?【英文标题】:Is an external window is being dragged? 【发布时间】:2011-03-16 04:29:51 【问题描述】:我有一个程序可以让窗口卡入指定位置和大小的插槽。您可以拖动一个窗口,然后当您完成拖动时它将捕捉到最近的插槽。我要添加的是在拖动发生时窗口将移动到的插槽的叠加层。
捕捉和覆盖工作正常。我的问题是我需要一种更好的方法来了解窗口是否被拖动。我阻止窗口在拖动时捕捉到插槽的方法是在单击鼠标时不做任何事情。在单击鼠标时绘制叠加层是可行的,但会导致在单击鼠标时显示叠加层,即使正在拖动窗口也是如此。
是否有一种方法可以使用 hwnd 并告诉我该窗口是否被拖动?或者有没有更好的方法来处理这个过程?
【问题讨论】:
【参考方案1】:由于我找不到任何东西,也没有人提出任何建议,我最终写了一些近似它的东西。 Win32 是我的静态类,它处理所有DllImport
s 和struct
定义以与user32.dll
交互。
private bool isWindowDragging(IntPtr hWND, Win32.RECT rect)
Point pos = Control.MousePosition;
return Control.MouseButtons.Equals(MouseButtons.Left) && hWND.Equals(Win32.GetForegroundWindow()) &&
pos.X >= rect.Left && pos.X <= rect.Right && pos.Y >= rect.Top && pos.Y <= rect.Top+40;
【讨论】:
以上是关于是否正在拖动外部窗口?的主要内容,如果未能解决你的问题,请参考以下文章
QListView - 如何将 QApplication 外部的拖动添加到默认行为
当对外部事件应用过滤器时,无法再拖动到fullcalendar