2010-10-05 13 views

Répondre

0

La meilleure façon de faire semble être juste changer simplement la souris curseur sur une image composite du curseur de la souris par défaut et l'image que vous voulez le suivre. Puis, une fois que vous avez terminé, revenez au curseur de la souris par défaut.

Il existe des moyens de faire cela avec P/Invoke, mais voici une théorie sur la façon de le faire sans eux. Dans les exemples que j'ai parcourus P/Invokes sont principalement utilisés pour obtenir un pointeur vers/pour une structure de curseur qui a été créée et Marshalled dans la mémoire non gérée. Ensuite, le pointeur est transmis au constructeur pour la classe System.Windows.Forms.Cursor. Toutefois, il existe une surcharge dans la classe Cursor qui accepte un flux mémoire. Si la même structure de fichier curseur pouvait être construite dans un flux mémoire, elle pourrait être transmise au constructeur, ce qui nous donnerait le curseur à changer. Le fichier image 'cur' est très similaire à un fichier 'ico', et est assez simple. Il se compose d'un petit en-tête, d'un répertoire d'images et enfin des données d'image proprement dites (Wikipedia entry on the ICO file format). Cela ne devrait pas être trop difficile à construire, puis écrire dans un flux de mémoire.

0

Pour plus d'informations sur le faire avec P/Invoque:

CodeProject: Custom Mouse Cursors (VB.NET)

les clés de l'article:

<DllImport("user32.dll", EntryPoint:="CreateIconIndirect")> _ 
Private Shared Function CreateIconIndirect(ByVal iconInfo As IntPtr) As IntPtr 
End Function 

<DllImport("user32.dll", CharSet:=CharSet.Auto)> _ 
Public Shared Function DestroyIcon(ByVal handle As IntPtr) As Boolean 
End Function 

<DllImport("gdi32.dll")> _ 
Public Shared Function DeleteObject(ByVal hObject As IntPtr) As Boolean 
End Function