begin process at 2012 05 29 00:17:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Code sans erreurs mais rien ne s'affiche!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Membre Club
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

Administrateur CodeS-SourceS
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

Membre Club
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

Administrateur CodeS-SourceS
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.


1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales