2017-09-02 78 views
2

我想將光標變成黑色。我搜索了很多網站,並最終得到了一些答案,但它們不適用於axShockwaveFlash。我有這樣的:如何更改axShockwaveFlash的光標?

Cursor = new Cursor(@"PathToCurFile"); 

它只是改變了形式的光標,但我想改變控制的鼠標。我嘗試了另一種選擇:

Cursor.Override = Cursor; 

我相信它沒有做任何事情。所以我試過這個:

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

再一次,它什麼也沒做。有人會告訴我如何改變光標的顏色嗎?

編輯1:我試着在它的頂部放置一個無形的標籤...改變了鼠標,但我不能點擊遊戲,所以我試圖通過點擊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和鼠標離開的事件,如:

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

如果沒有這些事件放在axShockwaveFlash1控制在PictureBox控制並使用其輸入/輸出鼠標事件。

+0

作品,但對於未來的用戶嘗試此: 你應該使用Form1_FormClosed事件和SystemParametersInfo 否則光標永遠不會恢復正常,即使你殺程序 我給你的賞金,但我應該等8個小時 – Emily