私はちょっとした楽しいガジェットをコーディングしています。元のマウスとは異なる場所に 2 番目 (またはそれ以上) のマウス ポインター アイコンを描画できるようにしたいが、元のマウスの動きに合わせて移動したい。
マウスの動きを追跡する方法は知っていますが、マウスポインターを描画/再描画する方法はわかりません。誰でも助けることができますか?
次のコードを使用できます。
CURSORINFO ci;
ci.cbSize = sizeof(CURSORINFO);
GetCursorInfo(&ci);
次に、次のコマンドを呼び出してカーソルを描画できます。
DrawIcon(ContextDC, YourXPosition, YourYPosition, ci.hCursor);
ホットスポットなど、カーソルに関する追加情報が必要な場合は、ICONINFO構造を確認してください。
ICONINFO ii;
GetIconInfo(ci.hCursor, &ii);
これは次のように実行できます。
を使用して、アプリケーションから現在のマウス カーソルを取得しますLoadCursor()
。NULL と必要なカーソルを指定するだけです。または、カーソルのビットマップをロードするだけです。これで、ビットマップができました。
次のステップは、デスクトップのデバイス コンテキストを取得することです: GetWindowDC(NULL)
. これにより、デスクトップのどこにでも描画する機会が得られます。
CreateCompatibleBitmap()
#2 で取得した DC で #1 のイメージに適用する必要がある可能性が非常に高くなります。
次に、BitBlt()
#2 で取得した DC からビット OUT をコピーして、カーソルを置きたい位置から保存イメージ (これらを作成する必要があります) にコピーします。
次に、#3 で取得した画像を、#2 で取得したデスクトップの DC の任意の位置に配置します。
ユーザーがマウスを移動すると、#4 で保存されたデータを使用してデスクトップ上のイメージが復元されます。必要のないものはすべて解放します (はい、これは必須です)。
そして#1から再スタート。
次の 2 つのリンクが役立ちます。
幸運を!