Usage de la fonction CreateSolidBrush( )

floufy69100 Messages postés 7 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 18 octobre 2009 - 11 oct. 2009 à 00:51
floufy69100 Messages postés 7 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 18 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.

10 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
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...
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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++.
0
floufy69100 Messages postés 7 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 18 octobre 2009
12 oct. 2009 à 09:13
je compile avec GNU GCC .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
0
floufy69100 Messages postés 7 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 18 octobre 2009
14 oct. 2009 à 10:33
j'ai toujours la mm erreur en faisant cette initialisation :

const HBRUSH hCouleur_Blanche = CreateSolidBrush(RGB(255,255,255));

erreur dans la fonction initialisation et destruction du compilateur :

undefined reference to "_CreateSolidBrush@4"
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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
0
floufy69100 Messages postés 7 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 18 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é ??!!
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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.
0
floufy69100 Messages postés 7 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 18 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.

MERCI BEAUCOUP
0
Rejoignez-nous