对Flash OCX进行子类化以更改鼠标光标

时间:2009-08-05 08:01:48

标签: c# .net vb.net flash

到目前为止,我正试图这样做,但没有运气。

我正在侦听WM_SETCURSOR消息并将光标设置在那里,它大部分时间都有效,但并非总是如此。我已经看到了另外两个我需要抓住的案例:

  • WM_PAINT:至少在WM_LBUTTONDOWN之后,光标被绘制而不调用WM_SETCURSOR ......
  • WM_CAPTURECHANGED:当鼠标停止并移动时,有时会发生。

即使这样做,光标有时也会闪烁,在某些情况下可以看到原始光标(例如:当你翻转某个将光标设置为其他对象的对象时)。我一直试图寻找其他一些模式或消息,但没有看到任何可以解决这个问题。有没有人成功过这个?

1 个答案:

答案 0 :(得分:0)

我决定检查更多消息并在返回之前和之后更改光标......

我在以下消息中使用了此方法:

  • WM_PAINT(仅在返回后,如果鼠标在闪存窗口上方)
  • WM_NCHITTEST(仅在返回后,如果鼠标在窗口上方)
  • WM_CAPTURECHANGED
  • WM_MOUSEACTIVATE
  • WM_LBUTTONDOWN(仅在返回后)
  • WM_LBUTTONDBLCLICK(仅在返回后)
  • WM_LBUTTONUP(仅在返回后)
  • WM_MOUSEHOVER
  • WM_MOUSEMOVE
当我跨过某个导致游标更改的热点时,需要WM_MOUSEMOVE ...并且试图避免捕获WM_NCHITTEST ...但这是我在电影中找到的一个极端情况的唯一解决方案... < / p>

当然我只更改光标,如果光标不是我想要的光标。

我仍然很少看到一些闪烁,但我想我可以处理它。如果有人可以将此验证为有效答案,或者可以提供更好的答案,我将完成此主题。感谢。