floufy69100
Messages postés7Date d'inscriptionmardi 29 septembre 2009StatutMembreDernière intervention18 octobre 2009
-
11 oct. 2009 à 00:51
floufy69100
Messages postés7Date d'inscriptionmardi 29 septembre 2009StatutMembreDernière intervention18 octobre 2009
-
17 oct. 2009 à 15:25
Bonjours,
j'ai un petit problème que je n'arrive pas à résoudre, je réussi à créer et à afficher une fenêtre windows, mais mon compilateur me dit qu'il ne trouve pas de fonction CreateSolidBrush( ) dans windows.h ce qui aurait dû me permettre de créer un handle HBRUSH pour mon background.
J'ai trouvé un autre moyen : GetSysColor(int) mais ça marche beaucoup moins bien !
Si quelqu'un a une solution, merci d'avance.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 11 oct. 2009 à 11:36
Salut,
C'est quel compilateur?
CreateSolidBrush() est déclarée dans wingdi.h et GetSysColor() dans winuser.h. Puisque ces deux fichiers sont "includés" dans windows.h ça ne devrait poser aucun problème normalement.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 11 oct. 2009 à 16:47
Pour utiliser cette fonction, il faut ajouter gdi32.lib dans les références du projet;
avec VC++ par exemple, simplement mettre quelque part :
#pragma comment(lib,"gdi32.lib")
ou passer par le menu options du projet etc...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 11 oct. 2009 à 17:00
juju12 >> Pas besoin de le faire avec VC++ car gdi32.lib, entre autres, est liée par défaut. D'ailleurs l'auteur de la question dit que c'est le compilateur qui ne reconnait pas la fonction. Les erreurs de liaison avec les libs sont engendrées, quant à elles, par l'éditeur de liens (linker). Il parait qu'il utilise autre chose que Visual C/C++.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 12 oct. 2009 à 22:20
Cherche dans ton windows.h la ligne #include <wingdi.h>. Si elle n'existe pas tu fais dans ton code:
#include <windows.h>
#include <wingdi.h>
Sinon, fais-voir l'erreur que ton compilateur affiche.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 14 oct. 2009 à 22:29
Comme deviné par juju12, il s'agit plutôt d'une erreur du linker. Tu devras te documenter un peu pour savoir comment linker des librairies avec GCC. Voici un lien:
http://c.developpez.com/tutgcc/book1.php
floufy69100
Messages postés7Date d'inscriptionmardi 29 septembre 2009StatutMembreDernière intervention18 octobre 2009 15 oct. 2009 à 12:02
Bon bah je suis dsl les gars, mais j'avais déjà pensé au linker, pour l'instant je suis obligé de coder avec Code::Blocks du coup je n'ai pas eu a faire de makefiles, j'ai direct linké wingdi.h (statiquement et dynamiquement, au cas ou ...) et pas de résultat, donc soit je suis vraiment un crétin, soit j'ai pas compris dans quelle direction vous voulez m'envoyé ??!!
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 15 oct. 2009 à 21:55
Je pense que code::blocks ajoute lui aussi la gdi32 par défaut. Sinon, vas dans le menu "Settings" puis choisis "Compiler and debugger...". Dans la boite qui s'ouvre clique sur l'onglet "Linker settings". Au dessous du volet gauche clique sur "Add" et tape libgdi32.a puis clique sur "Ok" pour finir.
floufy69100
Messages postés7Date d'inscriptionmardi 29 septembre 2009StatutMembreDernière intervention18 octobre 2009 17 oct. 2009 à 15:25
LOL un grand merci a toi RACPP, C T bien cela, le plus drole c'est que quand je vous avais dit que j'avais linké statiquement, bah j'avais fait exactement ca mais je m'étais trompé en mettant "wingdi.a" pff ste tristesse.