2

複数のマウスに別のカーソルを表示するにはどうすればよいですか?

私は2つのTMemo、それぞれのTMemoに入力できる2つのキーボード、2つのマウスを持っており、それらに2つのカーソルが必要です。

仮に、私はすでにどのマウスがどれであるかを検出できます。どうすれば自分のカーソルを作成してそれに合わせることができますか。(Delphiを使用)おそらくMultipointの方針に沿って

別の方法として、複数のカーソルをレンダリングできるソフトウェアはありますか。CPNMouseのように

編集:Windowsでmouse_event関数を使用できることがわかりましたが、カーソルの視覚的表現がまだありません。

4

3 に答える 3

3

カーソルは単なるリソースです。これは、使用できる標準カーソルの適切なリストです。TControl特定のコントロール上で使用する必要があるカーソルに設定できるカーソルプロパティを定義します。Screen.Cursorを使用して、アプリケーションカーソル全体を制御することもできます。

カスタムカーソルを定義するには、次のコードを使用します。

{$R MyCustomCursors.RES}

const
 crCustom1 = 1;
 crCustom2 = 2; 

...

  Screen.Cursors[crCustom1] := LoadCursor(hInstance, 'CUSTOM1');
  Screen.Cursors[crCustom2] := LoadCursor(hInstance, 'CUSTOM2');

...

Delphiはデフォルトでは複数のマウスポインタを処理するようには設計されていませんが、ほとんどの環境はそうではないと思います。あなたが言及したSDKは、単一のアプリケーションで同時に複数のマウスを使用することについて私が見た唯一の情報源です。ただし、これは.NETのみであるため、これを使用するにはDelphiPrismが必要になります。

複数のマウスを独自にサポートしたい場合は、WM_INPUTを使用するのと同じトリックを使用できます。Windowsは両方のマウスを同じものとして扱います。2番目のマウスでは、マウスカーソルのカスタムペイントを手動で行う必要があります。

于 2010-06-22T03:41:32.873 に答える
0

Windows は、複数のマウスまたはキーボードをサポートしていません。各プロセスには 1 つの入力キューしかないため、Windows はすべての同様の入力デバイスを同じ 1 つのデバイスとして扱います。これは変更できません。話の終わり。限目。

しかし、システム全体でこれを行うことができなくても、1 つの特定のアプリケーションでこれを行うことができます。特別なドライバーを作成して、2 番目のマウスのみにインストールする必要があります。このドライバーは、マウスの動きを通常のコンシューマー (入力キュー) に渡すのではなく、入力をアプリケーションに直接リダイレクトする必要があります。

既に記述されているドライバーを使用できます。たとえば、これまたは既に言及したドライバーです。

于 2010-06-22T08:23:42.553 に答える
0

何かをシームレスにすばやく実行することにより、元のカーソルから仮想的にそのアクションをシミュレートできます

于 2015-06-09T14:02:46.240 に答える