2017-09-02 5 views
2

カーソルを黒に変更したいと考えました。私は多くのウェブサイトを検索し、いくつかの答えで終わったが、彼らはaxShockwaveFlashで動作しません。私はこれを持っています:axShockwaveFlashのカーソルを変更するにはどうすればよいですか?

Cursor = new Cursor(@"PathToCurFile"); 

これはフォームのカーソルを変更するだけですが、私はコントロールのマウスを変更したいと思います。別の方法を試しました:

Cursor.Override = Cursor; 

私は何もしません。だから私はこれを試した:

axShockwaveFlash1.Cursor = new Cursor(@"PathToCurFile"); 

再び何もしません。誰か私のカーソルの色を変更する方法を教えてもらえますか?

Edit1:私はそれの上に目に見えないラベルを置いてみました...マウスを変えましたが、ゲームをクリックできませんでしたので、AxShockwaveFalshにクリックを渡そうとしましたが、正常に。

答えて

1

Win32 APIを使用して下位レベルで行う必要があります。

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 

using System.Runtime.InteropServices; 
public class Form1 
{ 
    [DllImport("user32.dll")] 
    public static extern IntPtr SetCursor(IntPtr hCursor); 

    [DllImport("user32.dll")] 
    private static extern IntPtr LoadCursorFromFile(string lpFileName); 

    [DllImport("user32.dll")] 
    private static extern bool SetSystemCursor(IntPtr hCursor, int id); 

    private const uint OCR_NORMAL = 32512; 

    static Cursor ColoredCursor; 

    public Form1() 
    { 
     this.Load += Form1_Load; 
    } 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     this.CenterToScreen(); 
    } 

    private void Button1_Click(object sender, EventArgs e) 
    { 
     IntPtr cursor = LoadCursorFromFile("C:\\Whatever\\Whatever\\example.cur"); 
     bool ret_val = SetSystemCursor(cursor, OCR_NORMAL); 
    } 
} 

私はaxShockwaveFlash1でカーソルを変更することをお勧めMouseEnterイベントとMouseLeaveイベントを制御し、例えば:それは持っていない場合

this.Controls["AxShockwaveFlashObject1"].MouseEnter +=Form1_MouseEnter; 

は、これらのイベントは、ピクチャボックスにaxShockwaveFlash1コントロールを配置ここでは、コードですイン/アウトマウスイベントを制御し、使用します。しかし、将来のユーザーがこれを試みる

+0

作品: あなたが今までに正常に戻って、あなたがプログラムを強制終了しても得ることはありませんForm1_FormClosedイベントとてSystemParametersInfo さもないと、カーソルを使用する必要があります は、私はあなたに恵みを与えるでしょうが、私は8時間待つべきです – Emily

関連する問題