Fichier ressource
-
- Messages : 80
- Inscription : mer. 24/mai/2006 12:12
Fichier ressource
Bonjour à tous,
J'essaie de créer un programme qui contiendra plusieurs icones. Pour le moment, la solution que j'ai trouvé, est d'extraire avec Ressource Hacker le contenu du fichier explorer.exe (c:\windows) que j'ai sauvegardé sous C:\Icones\1.rs.
Le contenu de ce fichier est:
ICO_MYCOMPUTER ICON "Icon_1.ico"
101 ICON "Icon2.ico"
102 ICON "Icon_3.ico"
103 ICON "Icon_4.ico"
J'ai également sauvegardé toutes les icones dans ce même répertoire. Dans les options du compilateur (PB 4.51), sous l'onglet ressources, j'ai bien spécifié l'emplacement de mon fichier rs (C:\Icones\1.rs). Cependant, jj'obtient ce message d'erreur:
PORC: C:\Icones\1.rc(1):error: File not found: 'Icon_1.ico'.
PORC: C:\Icones\1.rc(3):error: File not found: 'Icon_2.ico'.
PORC: C:\Icones\1.rc(5):error: File not found: 'Icon_3.ico'
.PORC: C:\Icones\1.rc(7):error: File not found: 'Icon_4.ico'.
J'ai bien essayé en mettant les icônes dans le répertoire du compilateur, mais le résultat est le même! Pouvez-vous m'aider?
Merci.
J'essaie de créer un programme qui contiendra plusieurs icones. Pour le moment, la solution que j'ai trouvé, est d'extraire avec Ressource Hacker le contenu du fichier explorer.exe (c:\windows) que j'ai sauvegardé sous C:\Icones\1.rs.
Le contenu de ce fichier est:
ICO_MYCOMPUTER ICON "Icon_1.ico"
101 ICON "Icon2.ico"
102 ICON "Icon_3.ico"
103 ICON "Icon_4.ico"
J'ai également sauvegardé toutes les icones dans ce même répertoire. Dans les options du compilateur (PB 4.51), sous l'onglet ressources, j'ai bien spécifié l'emplacement de mon fichier rs (C:\Icones\1.rs). Cependant, jj'obtient ce message d'erreur:
PORC: C:\Icones\1.rc(1):error: File not found: 'Icon_1.ico'.
PORC: C:\Icones\1.rc(3):error: File not found: 'Icon_2.ico'.
PORC: C:\Icones\1.rc(5):error: File not found: 'Icon_3.ico'
.PORC: C:\Icones\1.rc(7):error: File not found: 'Icon_4.ico'.
J'ai bien essayé en mettant les icônes dans le répertoire du compilateur, mais le résultat est le même! Pouvez-vous m'aider?
Merci.
-
- Messages : 80
- Inscription : mer. 24/mai/2006 12:12
Re: Fichier ressource
Pas beaucoup de réponses...
Re: Fichier ressource
Je n'ai jamais utilisé de fichier ressource, désolé. 

Re: Fichier ressource
Pareil, j'utilise pas les ressources...désolé.
Only PureBasic makes it possible
Re: Fichier ressource
Gérer des ressources en PB : http://www.purebasic.fr/english/viewtop ... 12&t=17950 par exemple.
Je n'utilise pas l'IDE de PB, et la gestion des ressources est différente dans jaPBe.
Cependant, concernant l'erreur de PORC, je pense qu'il s'agit d'un problème de chemin de fichier...
Essaie de mettre un chemin dans le fichier RC, par exemple
Je n'utilise pas l'IDE de PB, et la gestion des ressources est différente dans jaPBe.
Cependant, concernant l'erreur de PORC, je pense qu'il s'agit d'un problème de chemin de fichier...
Essaie de mettre un chemin dans le fichier RC, par exemple
Test.RC a écrit :ICO_MYCOMPUTER ICON "c:\\purebasic450\\test\\Icon_1.ico"
-
- Messages : 80
- Inscription : mer. 24/mai/2006 12:12
Re: Fichier ressource
Merci...Une question? On peut ajouter plusieurs icones à un exe avec jaPBe?
J'ai entendu parler de ce programme mais je ne le connais pas...Je suis sur qu'il serait interressant...
J'ai entendu parler de ce programme mais je ne le connais pas...Je suis sur qu'il serait interressant...
Re: Fichier ressource
Oui, jaPBe gère les ressources.Programmes a écrit :Merci...Une question? On peut ajouter plusieurs icones à un exe avec jaPBe?
J'ai entendu parler de ce programme mais je ne le connais pas...Je suis sur qu'il serait interressant...
Avec PB, on peut faire plus simple avec les DataSection :
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration
#Image_0
#Image_1
#Image_2
EndEnumeration
Enumeration
#Image_Image_0
#Image_Image_1
#Image_Image_2
EndEnumeration
DataSection ; On peut inclure des icônes ou images ...
Image_Image_0:
IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico"
Image_Image_1:
IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\Drive.bmp"
Image_Image_2:
IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\File.bmp"
EndDataSection
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 450, 200, 226, 80, "Icones", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
ImageGadget(#Image_0, 10, 20, 36, 36, CatchImage(#Image_Image_0, ?Image_Image_0), #PB_Image_Border)
ImageGadget(#Image_1, 70, 30, 20, 20, CatchImage(#Image_Image_1, ?Image_Image_1), #PB_Image_Border)
ImageGadget(#Image_2, 110, 30, 20, 21, CatchImage(#Image_Image_2, ?Image_Image_2), #PB_Image_Border)
EndIf
EndProcedure
OpenWindow_Window_0()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
CloseWindow(#Window_0)
Break
EndSelect
EndSelect
ForEver
-
- Messages : 80
- Inscription : mer. 24/mai/2006 12:12
Re: Fichier ressource
Je viens d'avoir un gros probleme d'ordi. Je te remercie pour ta réponse, je m'empresse d'aller essayer ton code.
Re: Fichier ressource
Voila comment je pratique pour PureIconManager ou l'ensemble des images et icônes de l'interface sont inclues dans un fichier ressource . rc (et pas rs), le 2ème fichier ressource contient l'ensemble des chaines pour les langues et mes codes d'erreurs etc.
Voilà le fichier ressource avec mes images et icônes (il y a d'autres choses à la fin mais je l'ai laissé tel quel) :
La même chose en PB, les déclarations :
et aussi les constantes des ressources (valeur microsoft à ne pas changer)
Maintenant voilà l'appel des ressources pour créer les images :
2 procédures :
et voilà comment je charge mes images/icônes :
pour les PNG
pour les icônes :
et pour finir la constante
Et toujours toujours toujours tester que l'image a bien été créé avec Isimage() qui va bien !
Voilà le fichier ressource avec mes images et icônes (il y a d'autres choses à la fin mais je l'ai laissé tel quel) :
le fichier resource.h est un fichier texte ou je défini les constantes liées aux langues que j'utilise.#include "resource.h"
#define folder_explorer 0
#define Extraire 1
#define Convertir 2
#define supprimer 3
#define Favoris 4
#define Tools 5
#define Aide 6
#define Apropos 7
#define Quit 8
#define AproposDe 10
#define Icone_vierge 20
#define FlecheUp 21
#define FlecheDown 22
#define Icone_Compression_Vista 23
#define Sphere_Jaune 24
#define Sphere_Bleue2_16_16_XP 25
#define Empy_dll 40
#define IID_IStorage 41
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
// Les images PNG de la barre d'outils
folder_explorer RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Folder ouvrir.png"
Extraire RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Enregistrer_sous.png"
Convertir RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Convertir.png"
supprimer RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Supprimer_32_32.png"
Favoris RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Favoris.png"
Tools RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Tools.png"
Aide RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Aide.png"
Apropos RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\logo_PB.png"
Quit RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\exit_32x32.png"
AproposDe RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\PureIconManger_Normal.png"
// Les icônes
Icone_vierge RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Icone_vierge.ico"
FlecheUp RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\ArrowUp.ico"
FlecheDown RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\ArrowDown.ico"
Icone_Compression_Vista RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Compression_Vista.ico"
Sphere_Jaune RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\croix_rouge_16_16_256.ico"
Sphere_Bleue2_16_16_XP RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\Sphere_Bleue2_16_16_XP.ico"
// la dll vide
Empy_dll RCDATA "E:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PIM_1_0\\Icone_barre_outils\\EmptyDll.pak"
// Définition des GUID
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IID_IStorage RCDATA
{
11L, 0L, 192L, 1174405120L
// équivalent à DefineGUID(IID_IStorage, $0000000B, $0000, $0000, $C0, $00, $00, $00, $00, $00, $00, $46)
}
Les icônes mais aussi pour les images ont une constante propre qui permet de les sélectionner, elles sont définies par les lignes#define LANG_NEUTRAL 0
#define SUBLANG_NEUTRAL 0
#define LANG_FRENCH 12
#define SUBLANG_FRENCH 1
#define LANG_ENGLISH 9
#define SUBLANG_ENGLISH_UK 2
#define LOCALE_USER_DEFAULT 1024
par exemple#define
défini la constante 21 pour l'icône FlecheUp#define FlecheUp 21
La même chose en PB, les déclarations :
Code : Tout sélectionner
;- icônes en RC_DATA
Enumeration 20
#Icone_vierge
#Fleche_Up
#Fleche_Down
#Icone_Compression_Vista
#Sphere_Jaune
#Sphere_Bleue2_16_16_XP
#EmptyDll = 40
#IID_IStorage
#ICL_NE_Defaut
EndEnumeration
Code : Tout sélectionner
Enumeration ; ResourceType, WinUser.h
#RT_CURSOR = 1
#RT_BITMAP = 2
#RT_ICON = 3
#RT_MENU = 4
#RT_DIALOG = 5
#RT_STRING = 6
#RT_FONTDIR = 7
#RT_FONT = 8
#RT_ACCELERATOR = 9
#RT_RCDATA = 10
#RT_MESSAGETABLE = 11
#RT_GROUP_CURSOR = 12
#RT_GROUP_ICON = 14
#RT_VERSION = 16
#RT_DLGINCLUDE = 17
#RT_PLUGPLAY = 19
#RT_VXD = 20
#RT_ANICURSOR = 21
#RT_ANIICON = 22
#RT_HTML = 23
#RT_MANIFEST = 24
EndEnumeration
2 procédures :
Code : Tout sélectionner
Procedure.i Get_RC_DATA_Adress(id)
;///////////////////////////////////////////////////////////////////////////////////////////////////
;//
;// FONCTION: Get_RC_DATA_Adress()
;//
;// BUT: Retourne l'adresse de la ressource RC_DATA de l'id passé en paramètre
;//
;// PARAMS: id - identifiant statique de la ressource RC_DATA
;//
;// RETOURNE: le handle de l'image
;// Retourne #Return_Error en cas d'error
;//
;///////////////////////////////////////////////////////////////////////////////////////////////////
;// mémorise le handle du bloc d'informations du groupe d'icônes
Protected Find_Resource
;// mémorise le handle du bloc d'information des données de la ressource string
Protected LoadResource_RT_RCDATA
;// mémorise l'adresse mémoire du block d'informations de la ressource chargée en mémoire
Protected *LockResource
;// mémorise la taille des données de la ressource RT_String pour la langue choisie
Protected SizeofResource
Find_Resource = FindResourceEx_(hInstance, #RT_RCDATA, MAKEINTRESOURCE(id), MAKELANGID(#LANG_NEUTRAL, #SUBLANG_NEUTRAL))
If Find_Resource = #Return_Error
ProcedureReturn #Return_Error
EndIf
LoadResource_RT_RCDATA = LoadResource_(hInstance, Find_Resource)
If LoadResource_RT_RCDATA = #Return_Error
ProcedureReturn #Return_Error
EndIf
*LockResource = LockResource_(LoadResource_RT_RCDATA)
If *LockResource = #Return_Error
ProcedureReturn #Return_Error
EndIf
ProcedureReturn *LockResource
EndProcedure
Procedure.i CatchImageEx(img_static_id)
;///////////////////////////////////////////////////////////////////////////////////////////////////
;//
;// FONCTION: CatchImageEx()
;//
;// BUT: charger une image depuis la resource RT_RCDATA
;//
;// PARAMS: img_static_id - identifiant statique de l'image, utilisé pour repérer la resource
;//
;// RETOURNE: le handle de l'image
;//
;///////////////////////////////////////////////////////////////////////////////////////////////////
;// mémorise l'adresse de la ressource
Protected *memory
*memory = Get_RC_DATA_Adress(img_static_id)
If *memory <> #Return_Error
CatchImage(img_static_id, *memory)
EndIf
EndProcedure
pour les PNG
Code : Tout sélectionner
UsePNGImageDecoder()
CatchImageEX(#folder_explorer)
CatchImageEX(#Enregistrer)
CatchImageEX(#Convertir)
CatchImageEX(#supprimer)
CatchImageEX(#Favoris)
CatchImageEX(#Tools)
CatchImageEX(#Aide)
CatchImageEX(#Apropos)
CatchImageEX(#Quit)
Code : Tout sélectionner
;// charge les 2 icônes flèches bleues
CatchImageEX(#Fleche_Up)
CatchImageEX(#Fleche_Down)
CatchImageEX(#Icone_vierge)
vaut 0 mais tu peux modifier#Return_Error
Et toujours toujours toujours tester que l'image a bien été créé avec Isimage() qui va bien !