5

私はちょっとした楽しいガジェットをコーディングしています。元のマウスとは異なる場所に 2 番目 (またはそれ以上) のマウス ポインター アイコンを描画できるようにしたいが、元のマウスの動きに合わせて移動したい。

マウスの動きを追跡する方法は知っていますが、マウスポインターを描画/再描画する方法はわかりません。誰でも助けることができますか?

4

2 に答える 2

7

次のコードを使用できます。

CURSORINFO ci;
ci.cbSize = sizeof(CURSORINFO);
GetCursorInfo(&ci);

次に、次のコマンドを呼び出してカーソルを描画できます。

DrawIcon(ContextDC, YourXPosition, YourYPosition, ci.hCursor);

ホットスポットなど、カーソルに関する追加情報が必要な場合は、ICONINFO構造を確認してください。

ICONINFO ii;
GetIconInfo(ci.hCursor, &ii);
于 2012-05-30T19:56:58.727 に答える
1

これは次のように実行できます。

  1. を使用して、アプリケーションから現在のマウス カーソルを取得しますLoadCursor()。NULL と必要なカーソルを指定するだけです。または、カーソルのビットマップをロードするだけです。これで、ビットマップができました。

  2. 次のステップは、デスクトップのデバイス コンテキストを取得することです: GetWindowDC(NULL). これにより、デスクトップのどこにでも描画する機会が得られます。

  3. CreateCompatibleBitmap()#2 で取得した DC で #1 のイメージに適用する必要がある可能性が非常に高くなります。

  4. 次に、BitBlt()#2 で取得した DC からビット OUT をコピーして、カーソルを置きたい位置から保存イメージ (これらを作成する必要があります) にコピーします。

次に、#3 で取得した画像を、#2 で取得したデスクトップの DC の任意の位置に配置します。

ユーザーがマウスを移動すると、#4 で保存されたデータを使用してデスクトップ上のイメージが復元されます。必要のないものはすべて解放します (はい、これは必須です)。

そして#1から再スタート。

次の 2 つのリンクが役立ちます。

ビットマップ、デバイス コンテキスト、および BitBlt

画像のキャプチャ

幸運を!

于 2012-05-30T20:14:21.500 に答える