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 : J'ai donc scrupuleusement suivi les instructions de cette page,
1- créer un .rc avec Leafpad (le "bloc-notes" de Linux) :
types
Code : Sélectionner tout - Visualiser dans une fenêtre à part MONVISEUR RT_GROUP_CURSOR "grayviseur64.png"
2- créer le .res avec windres :
3- l'inclure dans le .pas du projet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part windres -i viseur.rc -o viseur.res
et à la fin, quand je lance le magnifique programme qui fonctionne tip-top avec un .lrs, voilà ce que je gagne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 initialization {$R viseur.res} end.
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 :
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.
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.
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 ([la ligne 2 est une sortie de Lazres]), le message d'erreur est le même...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 lazres /path/viseur2.res /path/grayviseur64.png ResourceName='grayviseur64' Type=RT_RCDATA
Mais vu la ligne de sortie de compil de lazres, je tente un remplacement :
et cette fois le message d'erreur me dit qu'il ne trouve pas grayviseur64.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 // crPointeur.LoadFromResourceName(HInstance, 'MONVISEUR'); crPointeur.LoadFromResourceName(HInstance, '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à :
la ressource "MONVISEUR" est introuvable...
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
Et si, fort de cette information renvoyée par lazres (Type=RT_RCDATA) je génère un nouveau .rc comme ça :
et ensuite un nouveau .res avec windres, ben restez assis, le programme ne trouve toujours pas la ressource.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MONVISEUR RT_RCDATA "grayviseur64.png"
Partager