cs_vicenzo
Messages postés178Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention25 août 20101 30 juil. 2007 à 18:10
Faut que j'aille prendre mes pillules, mon francais devient obscur.. Voila le post précédent une fois francisé..
"
C'est bien ce que je disais... tu as du faire les mêmes modif que moi.
Ce code n'a pas pu être compilé, je n'avais pas révé ! Encore une fois, faire attention aux confusions C/C++ ...
Surtout
cela serait sympa quand on poste un message de ne pas commencer par
dire que le code compile parfaitement alors qu'il est incompilable..
A
moins que le code aie été modifié sans que le fichier obj n'aie été recrée
pour une raison x ce qui aurait pu induire en erreur Etaxi...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 29 juil. 2007 à 13:58
Salut,
Je t'avais déja répondu dans l'autre post. Je viens de faire un test et ça marche chez moi après avoir ajouté #define IDC_STATIC 1001 dans le fichier resource.h. La boite de dialogue s'affiche bel et bien avec tous les controles dedans.
Vous n’avez pas trouvé la réponse que vous recherchez ?
etaxi
Messages postés24Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention24 mars 2008 29 juil. 2007 à 16:37
D'accord, je n'avais remarqué que ctte ligne manquait!
merci.
maintenant j'ai une erreur de syntaxe dans le resource.h
à la ligne:
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
je n'arrive pas à la corriger!
c'est quoi ceette erreur?
etaxi
Messages postés24Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention24 mars 2008 29 juil. 2007 à 17:49
Désolé, j'ai corrigé cette ligne (autant pour moi!)
mais TOUJOURS PAREIL!
le projet se compile sans erreurs, j'ai un exécutable
mais mais il inerte! (rien ne se produit)
Que faut-il faire?
cs_vicenzo
Messages postés178Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention25 août 20101 29 juil. 2007 à 18:13
Je me demande comment ce code a pu compiler !!!! A moins que BCB te permette de compiler un fichier C comme du C++ ou tu le lui ai spécifié.
Donc, par défaut un fichier .c est un source C et les lignes suivante sont du C++, donc non reconnue par un ,compilo C :
#include <cstdio>
using namespace std;
DialogBox(hInstance, MAKEINTRESOURCE(IDD_CONTROLSDLG), hWnd, reinterpret_cast<DLGPROC>(DlgProc));
D'ailleurs ce code ne se compile pas avec un compilo Microsoft...
Pour le #define IDC_STATIC 1001, c'est une erreur car par défaut les headers microsoft definissent la valeur à -1 et la valeur 1001 peut être aussi utilisée par d'autres contrôle sur gros fichiers ressources sans s'en apercevoir. Il vaut mieux utiliser #define IDC_STATIC -1
Ce qui peut gener c'est le style DS_MODALFRAME qui n'est plus reconnu par le dernier SDK microsoft
De plus, pour que les styles soient reconnu par le compuilareur de ressources, il faut ajouter #include <windows.h> au début du fichier de ressources.
Un conseil : ton fichier main -> renomme le en cpp si tu veux faire du c++, sinon corrige ton source. Je ne sais pas comment ce code a pou compiler et d'ailleurs si tu changait de compilo, cela ne fonctionnerait plus...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 30 juil. 2007 à 14:12
Pendant mon test, j'ai remarqué que le problème venait de DialogBox() qui refuse de créer la boite de dialogue. C'est normal car Windows n'arrive pas à trouver certaines valeurs depuis les ressources de l'exécutable. Il s'agit de IDC_STATIC qui n'était pas défini. C'est vrai que j'avais aussi ajouté #include <windows.h> au début du fichier rc pour qu'il reconnaisse certaines constantes mais j'avais oublié de le préciser.
cs_vicenzo
Messages postés178Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention25 août 20101 30 juil. 2007 à 14:57
Racpp,
tu as quoi comme outil de dev ? Car je me demande toujours comment ce code, si le source est un .c, a pu être compilé !
DevCPP et CBC permettent ils de compiler des *.c en tant que cpp ?
De plus si IDC_STATIC n'était pas déclaré, le compilo de ressources ne pouvait pas compiler le fichier rc et le linker ne pouvait pas générer d'éxecutable....
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 30 juil. 2007 à 17:22
vicenzo >> J'ai fait le test avec Visual Express 2005. En réponse à cette question dans l'autre post de l'auteur de la question, je me demandais justement comment le compilateur de ressources laisserait passer ce genre d'erreur. Je pensais à une lacune de CBC. Je vais tester maintenant avec Dev CPP.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 30 juil. 2007 à 17:49
Je viens de tester le code avec Dev Cpp 4.9.9.2. Après avoir viré #include <cstdio> et using namespace std; je n'ai fait que trois petites modifications ; comme prévu, pour le faire marcher:
1- Ajouter #define IDC_STATIC 111 dans le fichier resource.h 2- Ajouter #include <windows.h> au début du fichier resource.rc 3- Remplacer reinterpret_cast<DLGPROC>(DlgProc) par (DLGPROC)DlgProc
cs_vicenzo
Messages postés178Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention25 août 20101 30 juil. 2007 à 18:06
C'est bien ce que je disais... tu as du faire les mêmes modif que moi.
Ce code n'a pas pu être compilé, je n'avias pas révé ! Encore une fois, faire attentrion aux confusions C/C++ ...
Surtout cela serait sympa quand on poste un message de ne pas commencer par dire que le code compile parfaitement alors qu'il est incompilable..
A moins que le code aie été modifié sans le fichier obj n'aie été recrée pour une raison x ce qui aurait pu induire en erreur Etaxi...
etaxi
Messages postés24Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention24 mars 2008 31 juil. 2007 à 07:28
Tout à fait d'accord, ah tu ne peux pas t'imaginer combien
j'ai besoins de tes précieux conseils (et les autres aussi),
Plus sérieusement, en ce moment je suis en train de payer
les conséquences de vouloir aller TROP VITE!
(ce qui fait je mélange tout!!!).
Je te promets que d'aurénavant je ferai d'avantage attention
à tous les détails que tu viens de citer
NB1:bonne nouvelle (CA MARCHE!)
NB2:j'ai dû laisser #include <cstdio> pour le sprintf().
encore merci.
cs_vicenzo
Messages postés178Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention25 août 20101 31 juil. 2007 à 08:45
En C, le header est "stdio.h" et non pas cstdio qui est un header c++ fourni par un outils C++ qui mappe vers "stdio.h" .
Si demain, tu compile ton source avec un outils C uniquement, cstdio ne sera alors plus fourni et ton code ne compilera plus.