【问题标题】:Is an external window is being dragged?是否正在拖动外部窗口?
【发布时间】:2011-03-16 04:29:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# draggable user32


    【解决方案1】:

    由于我找不到任何东西,也没有人提出任何建议,我最终写了一些近似它的东西。 Win32 是我的静态类,它处理所有DllImports 和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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多