Bonjour,

j'ai voulu me mettre en conformité avec la nouvelle direction de Lazarus (tout pour Windows ?), suite à la lecture inquiétante de ces quelques lignes de Gilles :
Citation Envoyé par gvasseur58 Voir le message
Précision : bien qu'étant à l'origine des fichiers Windows, les fichiers RES sont à présent utilisables par les versions Linux. Il est même fortement recommandé d'abandonner l'ancien format (bis repetitat).
J'ai donc scrupuleusement suivi les instructions de cette page,
1- créer un .rc avec Leafpad (le "bloc-notes" de Linux) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
MONVISEUR	RT_GROUP_CURSOR	"grayviseur64.png"
types

2- créer le .res avec windres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
windres -i viseur.rc -o viseur.res
3- l'inclure dans le .pas du projet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
initialization
  {$R viseur.res}
end.
et à la fin, quand je lance le magnifique programme qui fonctionne tip-top avec un .lrs, voilà ce que je gagne :
Nom : resource_pb.png
Affichages : 437
Taille : 80,2 Ko

De haut en bas :
- le message d'erreur au lancement du prog ;
- la fenêtre de ResExplorer qui montre bien qu'une ressource nommée MONVISEUR existe ;
- le fichier viseur.rc que windres a utilisé pour générer le .res.

À partir de là, que faire ?
Et qu'on ne me dise pas d'utiliser des outils windows, d'une part je suis sous Linux, et d'autre part c'est ce que j'ai fait hier soir dans une machine virtuelle, avec les mêmes résultats...

La seule différence avec la page d'exemple que j'ai citée et mon code, c'est que tout en bas de l'exemple c'est un TImage qui est utilisé, quand moi j'ai besoin d'un TCursorImage, que j'essaye de charger ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
  crPointeur: TCursorImage;
begin
  crPointeur := TCursorImage.Create;
  crPointeur.LoadFromResourceName(HInstance, 'MONVISEUR');
  Screen.Cursors[34] := crPointeur.ReleaseHandle;
  crPointeur.Free;
  imgRainbow.Cursor := 34; // TImage qui va utiliser le curseur perso.
Ces 5 lignes ont fonctionné dans un vieux projet de test, pour lequel le .res avait été créé à partir d'un .cur généré avec le .png et un outil Windows, mais c'est tellement vieux que je ne me souviens pas comment j'ai fait.
Et surtout, la page d'exemples Lazarus ne parlant pas de .cur, il n'y a donc aucune raison pour que je continue à (essayer de) l'utiliser.

EDIT :
PS : si je génère un viseur2.res avec lazres (
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
lazres /path/viseur2.res /path/grayviseur64.png 
ResourceName='grayviseur64' Type=RT_RCDATA
[la ligne 2 est une sortie de Lazres]), le message d'erreur est le même...

Mais vu la ligne de sortie de compil de lazres, je tente un remplacement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
//  crPointeur.LoadFromResourceName(HInstance, 'MONVISEUR');
  crPointeur.LoadFromResourceName(HInstance, 'grayviseur64');
et cette fois le message d'erreur me dit qu'il ne trouve pas grayviseur64.

Je vous laisse imaginer ma satisfaction et mon enthousiasme.
En plus il pleut...

EDIT2 :
Et même en forçant le nom de la ressource, comme expliqué là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
lazres /path/viseur2.res /path/grayviseur64.png=MONVISEUR
/path/grayviseur64.png ResourceName='MONVISEUR' Type=RT_RCDATA
la ressource "MONVISEUR" est introuvable...

Et si, fort de cette information renvoyée par lazres (Type=RT_RCDATA) je génère un nouveau .rc comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
MONVISEUR	RT_RCDATA	"grayviseur64.png"
et ensuite un nouveau .res avec windres, ben restez assis, le programme ne trouve toujours pas la ressource.