IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] Impossible de supprimer une fonction que j'ai rajout�


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut [MFC] Impossible de supprimer une fonction que j'ai rajout�
    Slt,

    Farscape m'a fil� un code qui marchait maisdont je n'ai plus besoin � pr�sent,
    il s'agissait de la redefinition de DoModal

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    int CDigiDialog::DoModal()
    {
       CDialogTemplate dlgTemp;
       int             nResult;
     
       // lecture du template d'origine
       if (!dlgTemp.Load(MAKEINTRESOURCE(IDD))) return -1;
     
       // fonte par defaut
       dlgTemp.SetFont("MS Sans Serif", 8);
     
       // pointeur sur le dialogue template modifié
       LPSTR pdata = reinterpret_cast<LPSTR>(GlobalLock(dlgTemp.m_hTemplate));
     
       m_lpszTemplateName = NULL;
       InitModalIndirect(pdata);
     
       // appel DoModal
       nResult = (int) CDialog::DoModal();
     
       // liberation du template modifié
       GlobalUnlock(dlgTemp.m_hTemplate);
     
       return nResult;
     
    }
    je met maintenant en commentaire la fonction ainsi que son prototype

    j'ai fais un clean car j'avais des soucis de link vers le DoModal

    et la plus moyen de lancer mon appli, des que je la lance, j'obtiens :

    Program: ... documents\Test\Debug\Test.exe
    File: dlgcore.cpp
    Line: 485
    Ca peut venir d'ou � votre avis ?

  2. #2
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut Re: [MFC] Impossible de supprimer une fonction que j'ai raj
    Citation Envoy� par firejocker
    Program: ... documents\Test\Debug\Test.exe
    File: dlgcore.cpp
    Line: 485
    Ca peut venir d'ou � votre avis ?
    Euh ... c'est un message d'erreur �a ? y'a rien dautre a cot� du genre invalide type ... enfin un VRAI message d'erreur ? t'utilise quel compilateur ?
    car a vrai dire on risque d'avoir du mal a t'aider ...

  3. #3
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    Autant pour moi,

    donc avant de cleaner ma solution, j'ai cette erreur de compilation :
    DlAnimAttente.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CDigiDialog:oModal(void)" (?DoModal@CDigiDialog@@UAEHXZ)
    apres le clean, c'est � l'execution
    ---------------------------
    Microsoft Visual C++ Debug Library
    ---------------------------
    Debug Assertion Failed!

    Program: ... documents\Test\Debug\Test.exe
    File: dlgcore.cpp
    Line: 485

    For information on how your program can cause an assertion
    failure, see the Visual C++ documentation on asserts.

    (Press Retry to debug the application)
    ---------------------------
    Abandonner Recommencer Ignorer
    ---------------------------

  4. #4
    Membre confirm� Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    D�tails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par d�faut
    V�rifie peut-�tre tous les appels � cette fonction DoModal().
    Regarde s'il n'y a rien dans le .h qui s'y rapporte.
    Regarde aussi s'il n'y a pas de liens existants avec le ClassWizard (CTRL+w -> Onglet Message Maps -> Fen�tre Member Functions -> rechercher DoModal

  5. #5
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par d�faut
    ouai a mon avis on dirait un probleme de fonction declarer dans le .h mais non defini.
    et ensuite a l'execution utilise des breakpoint pour debugger "pas � pas" ton application merci de nous indiquer l'endroit ou l'erreur est lanc�e.

  6. #6
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    je l'ai supprim� du point h aussi

    cette classe derive de CDialog :
    class CDigiDialog : public CDialog
    donc, une fois DoModal supprim� tout appel � DoModal devrait appeler celle de CDialog normalement, non ?

    Regarde aussi s'il n'y a pas de liens existants avec le ClassWizard (CTRL+w -> Onglet Message Maps -> Fen�tre Member Functions -> rechercher DoModal
    Dans Visual C++ .Net [Ctrl + W] ca fais rien

  7. #7
    Membre confirm� Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    D�tails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par d�faut
    Citation Envoy� par firejocker
    Dans Visual C++ .Net [Ctrl + W] ca fais rien
    Je ne connais pas les raccourcis pour Visual.net (j'utilise Visual Studio 6) mais il est s�r que tu dois avoir un �quivalent au Class Wizard (peut-�tre m�me qu'il s'appellle comme �a).
    [edit]Ah ben non... d�sol�

  8. #8
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    En effet, il n'y a pas de class wizzard (ctrl+w) dans visual .net.
    Fait une recherche sur tout ton projet sur "DoModal", il y apeut-�tre des d�clarations qui trainent...

  9. #9
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    nan, ca j'ai deja fais,

    c'est les seules definitions de domodal et je les met en commentaire

  10. #10
    Membre confirm� Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    D�tails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Par d�faut
    As-tu essay� de ne mettre en commentaire que le contenu de la fonction ?

  11. #11
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    ouep, deja test�,
    j'ai remplac� son contenu par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    return (int) CDialog::DoModal();
    ca me plante de la meme fa�on

  12. #12
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par firejocker
    apres le clean, c'est � l'execution
    ---------------------------
    Microsoft Visual C++ Debug Library
    ---------------------------
    Debug Assertion Failed!

    Program: ... documents\Test\Debug\Test.exe
    File: dlgcore.cpp
    Line: 485

    For information on how your program can cause an assertion
    failure, see the Visual C++ documentation on asserts.

    (Press Retry to debug the application)
    ---------------------------
    Abandonner Recommencer Ignorer
    ---------------------------
    Quand tu remonte la call stack, tu tombe sur quelle ligne de code?

  13. #13
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Quand tu remonte la call stack, tu tombe sur quelle ligne de code?
    Comment on fait ca ?

  14. #14
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Quand ton prog plante, tu dois avoir le choix entre 'continue' et 'break'. Tu fais break. Et puis tu ouvre la fen�tre 'call stack' (ou 'pile d'appels' si tu as visual en fran�ais). Pour ouvrir cette fenetre, tu vas dans view/other windows/call stack.
    L�, tu va avoir (class� par ordre chronologique, de dernier appel �tant en haut de la pile) les appels de tes fonctions. Tu remontes jusqu'au premier appel d'une fonction � toi (tu verras, il y a aura certainement tout un tas de fonctions auxquelles tu n'aura pas acc�s. Enfin si, mais uniquement au code asm...). Et l� tu va tomber sur l'appel qui fait planter.
    Une fois que tu as localis� cette ligne de code, le mieux est de mettre un point d'arr�t ici, de relancer le programme, et de regarder ce qu'il se passe � cet endroit.

    Hope it helps.

  15. #15
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    le "Call Stack" etait dans le menu : Debug / Windows / Call Stack

    sinon, ben ca m'aide pas en fait,

    le soft plante lors de l'appel du premier DoModal (celui qui lance mon appli)

    dans l'InitInstance() du CPP principal

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    	CDlAccueil dlg;
    	m_pMainWnd = &dlg;
    	INT_PTR nResponse = dlg.DoModal();

    les definitions :

    class CDlAccueil : public CDigiDialog

    class CDigiDialog : public CDialog

  16. #16
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par firejocker
    le "Call Stack" etait dans le menu : Debug / Windows / Call Stack
    Oui, quand tu es en cours d'ex�cution. Pardon de ne pas avoir pr�cis�.

    Citation Envoy� par firejocker
    le soft plante lors de l'appel du premier DoModal (celui qui lance mon appli)
    Si tu pose un point d'arret sur le DoModal, et que tu fais F11, tu arrives o�?

  17. #17
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    dans dlgcore.cpp etca plante � la premiere ligne sur l'ASSERT

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    INT_PTR CDialog::DoModal()
    {
    	// can be constructed with a resource template or InitModalIndirect
    	ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL ||
    		m_lpDialogTemplate != NULL);

  18. #18
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    1/ Quand tu est dans le DoModal, jette un coup d'oeil sur le this, voir s'il ya quelque chose de flagrant qui ne va pas.

    2/ lequel de m_lpszTemplateName, m_hDialogTemplate et m_lpDialogTemplate est == NULL?

    Je pense que tu as d� supprimer une ligne de trop dans le code g�n�r� automatiquement par l'ide.

  19. #19
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    1) au niveau du this : tous est � 0x00000000

    2) les 3

  20. #20
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Pfff, je sais pas...
    vas-y, balance les .h et les constructeurs de tes 2 dialogs qui h�ritent de CDialog.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. impossible de supprimer une image!
    Par pierrot67 dans le forum Bases de donn�es
    R�ponses: 2
    Dernier message: 08/09/2006, 15h03
  2. R�ponses: 1
    Dernier message: 30/12/2005, 17h14
  3. [MFC] Arreter execution d'une fonction
    Par ricky78 dans le forum MFC
    R�ponses: 1
    Dernier message: 07/11/2005, 15h52
  4. impossible de supprimer une imprimate r�seau
    Par sony351 dans le forum Administration
    R�ponses: 4
    Dernier message: 27/10/2005, 12h30
  5. DAO impossible d'utiliser une fonction dans un requete
    Par exter666 dans le forum VBA Access
    R�ponses: 10
    Dernier message: 24/09/2005, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo