Accueil > Forum > > > > Code sans erreurs mais rien ne s'affiche!
Code sans erreurs mais rien ne s'affiche!
dimanche 29 juillet 2007 à 10:06:52 |
Code sans erreurs mais rien ne s'affiche!

etaxi
|
Salut à tous,
voilà j'ai un petit projet qui se compile sans erreurs.
(déjà écrit sous Borland C++ Builder)
mais à l'exécution( sous DevC++ ), rien ne s'affiche !
quelqu'un pourrait me dire d'ou vient l'erreur?
Pour renseignement je donne les sources:
//main.c
#include
#include
using namespace std;
#ifdef __BORLANDC__
#pragma argsused
#endif
#include "resource.h"
//---------------------------------------------------------------------------
HWND hWnd;
HINSTANCE hInst;
BOOL CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
//---------------------------------------------------------------------------
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_CONTROLSDLG),
hWnd, reinterpret_cast(DlgProc));
hInst = hInstance;
return 0;
}
//---------------------------------------------------------------------------
BOOL CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
char strMarkedPrice[20], strTaxRate[20], strTaxAmount[20], strNetPrice[20];
HWND hWndMarkedPrice, hWndTaxRate, hWndTaxAmount, hWndNetPrice;
double MarkedPrice, TaxRate, TaxAmount, NetPrice;
hWndMarkedPrice = GetDlgItem(hWndDlg, IDC_MARKED_PRICE);
hWndTaxRate = GetDlgItem(hWndDlg, IDC_TAX_RATE);
hWndTaxAmount = GetDlgItem(hWndDlg, IDC_TAX_AMOUNT);
hWndNetPrice = GetDlgItem(hWndDlg, IDC_NET_PRICE);
switch(Msg)
{
case WM_INITDIALOG:
SetWindowText(hWndMarkedPrice, "0.00");
SetWindowText(hWndTaxRate, "5.75");
SetWindowText(hWndTaxAmount, "0.00");
SetWindowText(hWndNetPrice, "0.00");
return TRUE;
case WM_COMMAND:
switch(wParam)
{
case IDC_CALCULATE_BTN:
GetWindowText(hWndMarkedPrice, strMarkedPrice, 20);
GetWindowText(hWndTaxRate, strTaxRate, 20);
MarkedPrice = atof(strMarkedPrice);
TaxRate = atof(strTaxRate) / 100;
TaxAmount = MarkedPrice * TaxRate;
NetPrice = MarkedPrice + TaxAmount;
sprintf(strTaxAmount, "%.2f", TaxAmount);
sprintf(strNetPrice, "%.2f", NetPrice);
SetWindowText(hWndTaxAmount, strTaxAmount);
SetWindowText(hWndNetPrice, strNetPrice);
return TRUE;
case IDCANCEL:
EndDialog(hWndDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}
//-----------------
//resource.rc
#include "resource.h"
IDD_CONTROLSDLG DIALOG 260, 200, 188, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Net Price Calculation"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Marked Price:",IDC_STATIC,10,11,45,8
EDITTEXT IDC_MARKED_PRICE,65,9,55,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "Tax Rate:",IDC_STATIC,10,32,32,8
EDITTEXT IDC_TAX_RATE,65,30,45,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "%",IDC_STATIC,112,32,10,8
PUSHBUTTON "Calculate",IDC_CALCULATE_BTN,130,30,50,14
PUSHBUTTON "Close",IDCANCEL,130,70,50,14
LTEXT "Tax Amount:",IDC_STATIC,10,52,41,8
EDITTEXT IDC_TAX_AMOUNT,65,50,55,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "Net Price:",IDC_STATIC,10,73,32,8
EDITTEXT IDC_NET_PRICE,65,71,55,12,ES_RIGHT | ES_AUTOHSCROLL
END
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_DIALOG1, DIALOG
BEGIN
LEFTMARGIN , 7
RIGHTMARGIN , 179
TOPMARGIN , 7
BOTTOMMARGIN, 88
END
END
#endif
//-------------------------------------
//resource.h
#define IDD_CONTROLSDLG 101
#define IDC_MARKED_PRICE 104
#define IDC_TAX_RATE 106
#define IDC_CALCULATE_BTN 107
#define IDC_TAX_AMOUNT 109
#define IDC_NET_PRICE 110
|
|
dimanche 29 juillet 2007 à 11:12:01 |
Re : Code sans erreurs mais rien ne s'affiche!

juju12
|
Pour les messages non gérés tu devrais mettre DefWindowProc, c'est peut être ça qui empêche l'affichage.
|
|
dimanche 29 juillet 2007 à 11:12:54 |
Re : Code sans erreurs mais rien ne s'affiche!

juju12
|
Oups désolé j'ai rien dit au contraire il faut pas.
|
|
dimanche 29 juillet 2007 à 13:58:10 |
Re : Code sans erreurs mais rien ne s'affiche!

racpp
|
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.
|
|
dimanche 29 juillet 2007 à 16:37:37 |
Re : Code sans erreurs mais rien ne s'affiche!

etaxi
|
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?
|
|
dimanche 29 juillet 2007 à 17:49:14 |
Re : Code sans erreurs mais rien ne s'affiche!

etaxi
|
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?
|
|
dimanche 29 juillet 2007 à 18:13:45 |
Re : Code sans erreurs mais rien ne s'affiche!

vicenzo
|
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...
version C de ton code qui fonctionne :
#include <windows.h> #include <stdio.h>
#include "resource.h"
//--------------------------------------------------------------------------- HWND hWnd; HINSTANCE hInst; BOOL CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); //--------------------------------------------------------------------------- int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_CONTROLSDLG), hWnd, (DLGPROC) DlgProc);
hInst = hInstance;
return 0; } //--------------------------------------------------------------------------- BOOL CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam) {
char strMarkedPrice[20], strTaxRate[20], strTaxAmount[20], strNetPrice[20]; HWND hWndMarkedPrice, hWndTaxRate, hWndTaxAmount, hWndNetPrice; double MarkedPrice, TaxRate, TaxAmount, NetPrice;
hWndMarkedPrice = GetDlgItem(hWndDlg, IDC_MARKED_PRICE); hWndTaxRate = GetDlgItem(hWndDlg, IDC_TAX_RATE); hWndTaxAmount = GetDlgItem(hWndDlg, IDC_TAX_AMOUNT); hWndNetPrice = GetDlgItem(hWndDlg, IDC_NET_PRICE);
switch(Msg) { case WM_INITDIALOG: SetWindowText(hWndMarkedPrice, "0.00"); SetWindowText(hWndTaxRate, "5.75"); SetWindowText(hWndTaxAmount, "0.00"); SetWindowText(hWndNetPrice, "0.00"); return TRUE;
case WM_COMMAND: switch(wParam) { case IDC_CALCULATE_BTN: GetWindowText(hWndMarkedPrice, strMarkedPrice, 20); GetWindowText(hWndTaxRate, strTaxRate, 20);
MarkedPrice = atof(strMarkedPrice); TaxRate = atof(strTaxRate) / 100;
TaxAmount = MarkedPrice * TaxRate; NetPrice = MarkedPrice + TaxAmount;
sprintf(strTaxAmount, "%.2f", TaxAmount); sprintf(strNetPrice, "%.2f", NetPrice);
SetWindowText(hWndTaxAmount, strTaxAmount); SetWindowText(hWndNetPrice, strNetPrice);
return TRUE; case IDCANCEL: EndDialog(hWndDlg, 0); return TRUE; } break; }
return FALSE; }
Bon courage
|
|
lundi 30 juillet 2007 à 14:12:14 |
Re : Code sans erreurs mais rien ne s'affiche!

racpp
|
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.
|
|
lundi 30 juillet 2007 à 14:57:15 |
Re : Code sans erreurs mais rien ne s'affiche!

vicenzo
|
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....
|
|
lundi 30 juillet 2007 à 17:22:56 |
Re : Code sans erreurs mais rien ne s'affiche!

racpp
|
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.
|
|
Cette discussion est classée dans : hwnd, idc, hinstance, price, tax
Répondre à ce message
Sujets en rapport avec ce message
Pb sur un ptit bout de prog en DirectX.... [ par Haldwin ]
Salut a tous....Voila j'ai deux ptits pbs quand je lance cette appli ci-dessous... (VC++)La première est q'une fois sur deux ma variable hWnd apres le
erreur(vc++6) [ par greg4 ]
Linking...LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainDebug/fen.exe : fatal error LNK1120: 1 unresolved externalsError execut
Probleme API, je ne comprend toujours pas:( [ par JackosKing ]
Bon j'ai un probleme avec mon debut de programme, je voulais utiliser les api, mais ca ne marche pas, je ne vois pas la fenetre apparetre:(voilà la so
crer "dialog non modal" [ par comfm ]
BonjourJe n'arrive pas à créer une boite de dialogue non modal, c'est à dire celle qui permet d'être tjs affichée et on peut cliquer derriere sans pro
PB EditBox [ par SfyLer ]
Bonjour à tous !J'ai créé un scanner de port sous dos, et j'ai commencer a le faire sous windows, j'ai presque fini le seul pb que j'ai c'est que je n
ouvrir une 2eme fenetre avec editbox et tout et tout, c'est possible? [ par Arnaud16022 ]
Hello tout le monde!je voudrais mettre un bouton dans une fenetre (ca c'est facile), mais seulement quand on clique dessus un autre fenetre s'ouvre, a
Trouver le hWnd d'une fenetre avec un hInstance [ par PinkRabbit84 ]
Comme puis-je faire pour avoir le HWND de la fenetre principale avec le HINSTANCE de l'appMerci d'avancePinkRabbit84
[C++]Problème de pointeur ou de liste chainee [ par Arkko ]
Bonjour... J'essaye de convertir une liste chainée du site en une liste chainée demandant comme parametre un new par exemple ajouter(new Test);Cela f
pb avec le plein écran de DirectX que je veux enlever [ par Diabolus ]
Bonjour à tous !Je souhaiterai créer une fenêtre en mode normal et tout ce que j'arrive à faire c'est du plein écran. J'aimerai enlever le plein écran
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|