Il n'y a aucun moyen d'utiliser une image d'animation GIF directement autant que je sache.
Tout comme la méthode IVsStatusbar.Animation mentionné:
[en] Si la VARIANT est un VT_I2, il fait référence à la SBAI_Index de icônes animées prédéfinies. Si ce paramètre est un VT_I4, il fait référence à un HBITMAP contenant l'image de bande de film pour l'animation, dont la largeur devrait être un multiple de sa hauteur.
Vous pouvez convertir votre fichier GIF à une image BMP dont la largeur est un multiple de sa hauteur par copier et coller chaque image de l'image GIF dans le fichier BMP, puis utiliser le code fourni dans le second lien vous avez parlé à.
Par exemple, voici une image BMP j'ai créé qui contient 5 images pour l'animation:
Enregistrer cette image sous forme de fichier BMP, utilisez le code dans le second lien et déboguer:
private void MenuItemCallback(object sender, EventArgs e)
{
IVsStatusbar statusBar = (IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
Bitmap b = new Bitmap(@"D:\ani.bmp");
IntPtr hdc = IntPtr.Zero;
hdc = b.GetHbitmap();
object hdcObject = (object)hdc;
statusBar.Animation(1, ref hdcObject);
System.Windows.Forms.MessageBox.Show("Click OK to end status bar animation.");
statusBar.Animation(0, ref hdcObject);
DeleteObject(hdc);
}
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);
Vous verrez l'animation dans Visual studio comme suit: