DOBON.NET DOBON.NETプログラミング掲示板過去ログ

カーソル表示について

環境/言語:[OS : Windows XP / 言語 : C# / .NET Framework : 2.0]
分類:[.NET]

【解決したい問題】

フォーム上に別途ランダムでマウスカーソルを表示したいため、Cursor.Drawを
使用しているのですが、フォーム上にボタンなどのオブジェクトがあると、
オブジェクトのある場所のみマウスカーソルが隠れてしまいます。
最前面にカーソルを表示する方法はあるのでしょうか。
入力したPGは、以下のようになります。
public partial class Form1 : Form
{
Random rnd;
Point p;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
rnd = new Random();
timer1.Interval = 1000;
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
int x = rnd.Next(this.Width-20);
int y = rnd.Next(this.Height-40);
p = new Point(x, y);
this.Refresh();
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rect = new Rectangle(p, new Size(20, 20));
this.Cursor.Draw(e.Graphics, rect);

}
}

最終的には、あるタイミングでクリックイベントなどを発生させようと
考えております。

ご教授をよろしくお願いします。
2010/10/19(Tue) 14:28:03 編集(投稿者)

■No27424に返信(Qちゃんさんの記事)
> 最前面にカーソルを表示する方法はあるのでしょうか。

(案0) そもそも描画するのではなく、実際のカーソルを移動する。
 Cursor.Position = p;

(案1) 別フォームに描画する。別フォーム上の余計な部分は、
 TransparencyKey または Region プロパティで削ぎ落としておく。

(案2) PictureBox に描画する。PictureBox 上の余計な部分は、
 Region プロパティで削ぎ落としておく。

(案3) デスクトップ全体に描画する。
 GetDC(IntPtr.Zero) で得たハンドルを Graphics.FromHdc(hDC) で。



> 最終的には、あるタイミングでクリックイベントなどを発生させようと
> 考えております。

(A案) Accessibility.DLL を参照設定し、AccessibilityObject プロパティから
 AccessibilityObject オブジェクトを得て、その DoDefaultAction メソッドを呼ぶ。
 または、要素ごとにクリック相当の処理を記述(例:ボタンなら PerformClick)。

(B案) AccessibleObjectFromPoint API を使って座標から IAccessible を得て、
 accDoDefaultAction メソッドを呼ぶ。

(C案) SendInput API で、マウス/キーボード操作をエミュレートする。


A 案なら API 不要ですが、どの座標にどのコントロールがあるかを把握する必要があります。
B 案は、ターゲットが accDoDefaultAction をサポートしていないと動作しません。
C 案はある意味確実ですが、他案と異なり、マウスカーソル自体の座標を移動させる必要があります。
  • 題名: 【報告】この投稿はマルチポストです
  • 著者: (報告)
  • 日時: 2010/10/20 0:04:36
  • ID: 27431
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
この投稿はマルチポストです。

●マルチポストされている場所
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/5c5a87e0-5d4f-4889-b8b7-38a81cac80ee

----------
この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのマナーについて」をお読みください。

●書き込みのマナーについて
http://dobon.net/vb/bbs/index.html

DOBON.NET | プログラミング道 | プログラミング掲示板