1

我有一个程序可以使窗口卡入指定位置和大小的插槽。您可以拖动一个窗口,然后当您完成拖动时它将捕捉到最近的插槽。我要添加的是在拖动发生时窗口将移动到的插槽的叠加层。

捕捉和覆盖工作正常。我的问题是我需要一种更好的方法来了解窗口是否被拖动。我阻止窗口在拖动时捕捉到插槽的方法是在单击鼠标时不做任何事情。在单击鼠标时绘制覆盖是有效的,但会导致在单击鼠标时显示覆盖,即使正在拖动窗口也是如此。

有没有一种方法可以使用 hwnd 并告诉我该窗口是否被拖动?或者有没有更好的方法来处理这个过程?

4

1 回答 1

2

由于我找不到任何东西,也没有人提出任何建议,我最终写了一些近似它的东西。Win32 是我的静态类,它处理所有要与之交互的DllImports 和定义。structuser32.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;
}
于 2010-07-23T01:30:08.527 回答