2016-04-29 105 views
0

我有一个窗口可以放入文件。我想要做的是当用户开始在桌面上拖动某些东西时(例如不在窗口上),可以更改窗口的装饰。如何检测全局拖动事件?

为此,我需要从窗口捕捉全局事件。这个事件被称为GiveFeedBack我认为(https://msdn.microsoft.com/en-us/library/system.windows.forms.control.givefeedback(v=vs.110).aspx)?但是我怎样才能在Qt上检测到它?

感谢

+0

我想我明白你在做什么,但是如果你增加一些更多的细节和你想要对问题本身做什么的例子,这可能是个好问题,而不是让我们读完MS文档并尝试猜测。 –

+0

我在桌面上有一个小的无框窗口,当用户开始在桌面上拖动某些东西时,我想要做的就是改变这个小窗口的外观(例如“放在这里”)。我遇到的问题是,由于这是一个全球性事件,我不知道该怎么做。我搜索了一些“开始拖动”事件,发现上面的链接,但我从来没有用过这样的东西,所以我不知道该怎么办。 – Megatron300

+0

可能会使用[native event filter](http://doc.qt.io/qt-5/qcoreapplication.html#installNativeEventFilter)检查“windows_generic_MSG”事件。你必须继承'QAbstractNativeEventFilter'并且提供你自己的'winEventFilter',至少在Qt5中。 –

回答

0

您可以设置鼠标事件一个窗口钩子和寻找出潜在的拖/下降或者从其他正在运行的进程(不是特别漂亮的)添加到挂钩窗口的消息特效。

在某些情况下,UAC可能会停止此工作。

请参见: SetWindowsHookEx

可能也有一些这方面的COM接口。但是当拖动开始时你可能不会收到事件。见RegisterDragDrop

+0

这是一条评论,不是答案。 –