Utilisation d'un curseur personnalisé

MGD Software 85 Messages postés vendredi 1 septembre 2006Date d'inscription 17 juin 2018 Dernière intervention - 11 mai 2018 à 16:08 - Dernière réponse : vb95 1625 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

3 réponses

vb95 1625 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention - 11 mai 2018 à 16:49
0
Merci
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
Commenter la réponse de vb95
MGD Software 85 Messages postés vendredi 1 septembre 2006Date d'inscription 17 juin 2018 Dernière intervention - 11 mai 2018 à 17:49
0
Merci
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...)
vb95 1625 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention - 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 !
Commenter la réponse de MGD Software

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.