質問

私はいくつかの非常に具体的な機能を持つカーソルを実装する必要があります:

  • アニメーションをする必要があります
    • 自動的にクリックすると自動的にクリックすると、クリックするとアニメーションはユーザーのフィードバック
  • それは私たちのコントロールのいくつかにスナップする必要があります
  • アプリケーションの外で働く必要があります

これまでのアプローチ:

  • 私のWPFコントロールをビットマップにレンダリングし、それからcursor-structを作成し、user32.dll / setSystemCursorを使用して設定する
    • pro
    • カーソルは、実際のカーソル
    • 以降、マウスの後に遅延はありません。
    • con
    • スナップは、特に絶対的な入力デバイスと相対的な入力デバイスを持っていて、常にマウス位置をリセットするか、User32.dll / clipcursor(System.Windows.Furss.cursor.Clipは同じ)を実行する必要があります。スナップカーソルは常にスナップ位置を揺り動かしています(脱出しようとし、再びリセットされます....)
    • 使用するコードは、ランダムな時間の後に奇妙な例外をスローします - 私の現在のコードは非常に不安定なようです
  • 私自身のカーソルを最大化、最上位、allowtransparent、windowstyle=なし、不可視ウィンドウ、マウスの後にカーソルを手動で移動します(canvas.setleft(Cursor、MousePosition.x))。
    • pro
    • スナップは(簡単に)完了
    • con
    • マウスクリックしてヒットしたときにカーソルがカーソルがクリックされ、ウィンドウを超えて
    • を超えていません。
    • ディスパッチャーバックグラウンドループでのマウス位置をポーリングする常に私にとって非常に美しいようではないようです

2番目のアプローチを解決するために私のカーソルは少なくとも1つの透明ピクセルを持たなければならないでしょう ホットスポットでは、マウスがクリックスルーできるように...それは私に本当の解決策のようには思われません...

誰かの誰か?

編集: 問題を表示するためのいくつかの例 -

例APP&SOURCEマウスを固定位置にスナップして問題を表示する:clipit.rar

ランダムな時間後に失敗したアプリケーションとソース - 自己描画カーソルを設定する:tryOnncur.rar

は次の下にあります。 http://sourcemonk.com/cursor

役に立ちましたか?

解決

HTTP://social.msdn.microsoft.com/forums/en-us/wpf/thread/a3cb7db7db6-5014-430F-A5C2-C9746B077D4F

マウス位置に続く私の自己描画カーソルをクリックすることができます ウィンドウスタイルの設定:なし、そしてallowtransparentすでにやったように その後

public const int WS_EX_TRANSPARENT = 0x00000020;
  public const int GWL_EXSTYLE = (-20);

  [DllImport("user32.dll")]
  public static extern int GetWindowLong(IntPtr hwnd,
  int index);

  [DllImport("user32.dll")]
  public static extern int SetWindowLong(IntPtr hwnd,
  int index, int newStyle);

  public static void makeTransparent(IntPtr hwnd) {
     int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
     SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
  }
.

とOnSourceInitializedからMaketransparentを呼び出します...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top