Utilisation d'un curseur personnalisé

MGD Software Messages postés 187 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 22 juin 2024 - Modifié le 11 mai 2018 à 16:09
vb95 Messages postés 3476 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 16 juin 2024 - 11 mai 2018 à 22:20
Bonjour,

J'ai besoin d'un curseur spécifique dans une application.
J'ai donc créé un fichier "Releve.cur". Jusque là tout va bien.

J'ai ensuite cherché à l'incorporer dans les ressources (Visual Studio Community 2015) .
Premier problème : Dans les propriétés du projet, section Ressources, on trouve à ajouter des images, des icônes, des fichiers textes, des chaines, de l'audio... mais pas de curseur.
J'ai donc opté pour le type "Autre", puis cliqué sur "Fichier existant". Le fichier s'affiche dans la liste des ressources, mais sous la forme d'un type indéterminé (pas d'icône représentant le curseur). Bon, c'est peut-être normal.

Le problème vient ensuite pour utiliser ce curseur.
Après maintes recherches sur le web, je n'ai trouvé aucune méthode qui fonctionne.
L'écueuil se place au niveau de la création de l'objet curseur.

1er essai : la solution Microsoft :
this.Cursor = new Cursor(GetType(), "Releve");

Résultat : le compilateur souligne GetType() en rouge et annonce :
"Erreur : Un initialiseur de champ ne peut pas faire référence au champ, à la méthode ou à la propriété non statique"

Après réflexion, j'ai ajouté "this." devant GetType. Plus d'alarme compilateur, mais lorsque j'exécute le code, j'ai l’exception : "La référence d'objet n'est pas définie à une instance d'un objet.",.

2ème essai : code trouvé sur un forum concurrent:
curReleve = new Cursor(Properties.Resources.ResourceManager.GetStream("Releve"));

Cette fois j'ai une exception : "La ressource 'Releve' n'était pas un Stream - appel GetObject à la place".
Le fait de rajouter ".cur" à Releve provoque le problème de référence non définie.

J'ai donc remplacé GetStream par GetObjet. Là, le compilateur dit :
"Erreur : Argument 1 : conversion impossible de 'object' en 'System.IntPtr'".

J'avoue être sec.
Dans l'arborescence des ressources, mon curseur est vu comme byte[].
J'ai fait l'essai avec un des curseurs originaux de Windows. Même résultat.
Je pense que le problème est que ma version de VS ne connait pas les curseur (???) puisque ce type ne figure pas dans la liste des ressources à incorporer.
Pour des raisons de de publication, je ne souhaite pas publier le curseur comme un fichier externe.
Quelqu'un saurait-il m'aider ?
Merci

2 réponses

vb95 Messages postés 3476 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 16 juin 2024 169
11 mai 2018 à 16:49
Bonjour !
Voici ce que j'ai fait
1) J'ai ouvert un de mes projets
2) Dans le menu Projet j'ai sélectionné "Ajouter un élément existant"
3) J'ai recherché mon fichier .cur et je l'ai ajouté
4) Il apparaît alors dans le répertoire de mon projet avec les Form,, Class, etc.…
5) Dans les éléments de mon projet je sélectionne mon fichier .cur avec Couper
6) Je sélectionne alors Resources et je colle mon fichier .cur ( on fait un couper-coller)
7) Le fichier .cur est dans les ressources du projet

Je l'ai fait avec succès sur un projet VB Net avec Visual Studio Community 2017 ! Je pense que l'on doit pouvoir faire de même avec un projet C#
Si cela peut t'aider …….

En passant Visual Studio Communiity 2017 est disponible sur le site Microsoft Visual Studio
0
MGD Software Messages postés 187 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 22 juin 2024 2
11 mai 2018 à 17:49
Merci pour la réponse.
La manip fonctionne effectivement, mais elle revient à ce que j'ai fait en utilisant directement les propriétés du compte, onglet "ressources". D'ailleurs, le curseur apparaît bien dans l'explorateur de solutions avec une icône de curseur.

Le problème n'est pas d'intégrer la ressource au projet, mais de l'utiliser.
Comme expliqué dans le post précédent, je n'arrive pas à créer un curseur à partir de cette ressource.
Et en transposant les exemples VB.Net que j'ai trouvé sur le web, cela ne fonctionne pas non plus.

Merci pour l'info sur la version 2017. Qu'apporte-t-elle de plus ? peut-être l'utilisation d'un framework plus récent. Mais pour beaucoup de mes applications, je doit rester avec le framework 4.0 pour rester compatible avec Windows XP (Si, si, il y en a encore beaucoup qui l'utilisent, même dans les (petites) sociétés...)
0
vb95 Messages postés 3476 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 16 juin 2024 169
11 mai 2018 à 22:20
Bonsoir !
J'avoue que je n'ai pas tester l'utilisation du curseur dans les ressources !
Par curiosité je vais faire un mini projet en C# pour essayer de trouver une solution !
0
Rejoignez-nous