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 :

Problème avec la méthode OnInitDialog


Sujet :

MFC

  1. #1
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut Problème avec la méthode OnInitDialog
    Bonjour,

    j'ai un petit soucis avec une CDialog : lors d'un appel du type madialog.DoModal() sa méthode OnInitDialog n'est pas appelée ... je ne comprends vraiment pas pourquoi ...

    Si quelqu'un vois comment s'en sortir merci d'avance

    PS : quand je fais la déclaration CDialog madialog (juste avant le MoModal() ) l'appel au constructeur se fait bien

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ta classe madialog dérive bien d'un CDialog. Tu dois créer ta propre classe CMadialog afin de pouvoir surcharger cette méthode OnInitDialog

    L'orthographe de ta fonction est correct ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	virtual BOOL OnInitDialog();
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Oui ne t'inquiètes pas c'est bien une surcharge de CDialog, mais pour que tlm comprennes bien j'ai "simplifié"

    Mon code exact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        CAddNoteDlg win(true, NULL, this);
        win.DoModal();
    La syntaxe est quant à elle exacte.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    On peut voir le .h et le .cpp car pour l'instant, cela à l'air bon
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    On peut voir le .h et le .cpp car pour l'instant, cela à l'air bon
    mon .cpp fait plus de 1600 lignes donc ça va être un peu dur

    Je vais juste te copier les références au OnInitDialog :
    dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    virtual BOOL OnInitDialog();
    dans le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BOOL CAddNoteDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
     
        .......
    }
    Le soucis est que je ne rentre jamais dans le OnInitDialog ... pour info cette classe marchait très bien dans un autre projet

    Mon IDD est bien définit, mais je pense que le problème doit venir de là, car pour "importer" ma classe ainsi que ces ressources j'ai fait pas mal de modifications "à la main". Après je ne vois pas comment le résoudre

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    rebuild all ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Si par là tu veux dire "rebuild solution" oui testé, mais sans effet.
    J'ai même supprimé le .ncb, sans effet non plus.

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    OnInitDialog est appelée suite à un message WM_INITDIALOG.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    INT_PTR CALLBACK AfxDlgProc(HWND hWnd, UINT message, WPARAM, LPARAM)
    {
        if (message == WM_INITDIALOG)
        {
            // special case for WM_INITDIALOG
            CDialog* pDlg = DYNAMIC_DOWNCAST(CDialog, CWnd::FromHandlePermanent(hWnd));
            if (pDlg != NULL)
                return pDlg->OnInitDialog();
            else
                return 1;
        }
        return 0;
    }
    alors si il ne passe pas dedans c'est peut être parce qu'il y a un problème d'initialisation graphique de ta fenêtre.
    met un point d'arrêt dans dodataexchange.
    trace pas à pas .
    et surtout surveille bien le panneau de sortie pour voir si il n' y a pas de message d'erreur signalé....

  9. #9
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Ça ne passe pas dans DoDataExchange, cependant je pense que c'est normal vu que DoDataExchange est sensé être lancée par la méthode OnInitDialog de CDialog, non ?

    Pas de message d'erreur dans Output

  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    trace domodal , tu dois forcement avoir une erreur sur l'appel de CreateDlgIndirect par exemple.

  11. #11
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    En effet l'appel de CreateDlgIndirect renvoie false : que faire ?

  12. #12
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    probablement un problème dans les identifiants et les valeurs des ressources.

    Il croit que l'identifiant du dialogue est 1052 alors que dans les ressources, c'est 4154 par exemple.

    Vérifie bien bien tes ressources et leurs identifiants et quand tu as fini, revérifie encore
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  13. #13
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Le truc c est que je ne vois pas comment c est possible :
    dans mon .h j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        enum { IDD = IDD_ADDNOTE };
    et dans le fichier des ressources :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define IDD_ADDNOTE                     339

  14. #14
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    il est possible que la section dans le fichier .rc soit vérolée ,tu n'as pas transféré cette dialogue d'un projet à l'autre ?
    d'une version de Visual à une autre ?
    j'ai déjà eu un problème de ce genre avec une section utilisant DIALOGEX à la place DIALOG.
    ce que tu peux faire c'est créer une autre dialogue et copier les contrôles un par un dans la nouvelle boîte et tu testes après chaque copie .
    n'oublie pas de changer l'identifiant de ta dialogue dans le .h de ta classe ...

  15. #15
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Oui je dois avouer que j'ai édité le .rc à la main pour récupérer tous les contrôles et sur l'éditer graphique le résultat est celui escompté.

    J'ai suivi le déroulement de CreateDlgIndirect et je suis arrivé à la ligne qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate, pParentWnd->GetSafeHwnd(), AfxDlgProcEx);
    cette ligne renvoie NULL et GetLastError() nous signale une erreur 120, c'est-à-dire :
    ERROR_CALL_NOT_IMPLEMENTED120 (0x78) This function is not supported on this system.
    Il doit falloir signaler que ma classe à besoin des ressources pour Windows Mobile, mais j'ai beau vérifier avec d'autres qui fonctionnent bien, je ne vois pas que rajouter

  16. #16
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    pour copier une dialogue d'un projet a l'autre on ne touche pas au fichier .rc...
    on ouvre dans le projet de destination le fichier .rc d'origine et on utilise copier coller pour récupérer la fenêtre...

  17. #17
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    J'ai copier-coller les sections correspondant à la dialog qui m'intéresse, car même si j'ouvre le .rc d'origine dans mon projet de destination il n'y a pas moyen de coller la dialog une fois copiée ...

    ce que tu peux faire c'est créer une autre dialogue et copier les contrôles un par un dans la nouvelle boîte et tu testes après chaque copie .
    ça n'a rien changé

  18. #18
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    tu peux citer les différents types de contrôle que tu as placé sur cette fenêtre ? (CEdit etc..)

  19. #19
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    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
    IDD_ADDNOTE DIALOG  0, 0, 256, 329
    STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
    FONT 8, "MS Sans Serif"
    BEGIN
        COMBOBOX        IDC_HORAIRE,8,16,83,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
        EDITTEXT        IDC_LIBELLE,27,165,168,25,ES_CENTER | NOT WS_BORDER
        CONTROL         "",IDC_NOTE,"RichEdit20W",WS_VSCROLL | WS_TABSTOP | 0x1044,30,204,168,72
        COMBOBOX        IDC_HEURE,23,60,42,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
        COMBOBOX        IDC_HEURE2,22,90,42,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
        COMBOBOX        IDC_CATEGORIE,27,145,66,12,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
        PUSHBUTTON      "Valider",IDC_VALIDER,152,279,84,12,NOT WS_TABSTOP
        LTEXT           "Heure de début : ",IDC_TEXTHEURE,19,47,59,8
        LTEXT           "Heure de fin : ",IDC_TEXTHEURE2,18,79,59,8
        PUSHBUTTON      "Supprimer",IDC_SUPPRIMER,67,279,84,12,NOT WS_TABSTOP
        GROUPBOX        "         Modifier les heures ",IDC_MODEHEURES,8,38,123,101,WS_DISABLED
        LTEXT           "Période :",IDC_TEXTPERIODE,8,8,30,8
        CONTROL         "",IDC_LECTURE,"Button",BS_OWNERDRAW,176,7,30,24
        CONTROL         "",IDC_LECTURE2,"Button",BS_OWNERDRAW,176,38,30,24
        CONTROL         "",IDC_STOP,"Button",BS_OWNERDRAW,206,7,30,24
        CONTROL         "",IDC_STOP2,"Button",BS_OWNERDRAW,206,38,30,24
        LTEXT           "Rappel : ",IDC_TEXTTIMER,35,108,59,8
        COMBOBOX        IDC_TIMER,24,118,42,12,CBS_DROPDOWNLIST | WS_VSCROLL
        CONTROL         "",IDC_CHECKTIMER,"Button",BS_AUTOCHECKBOX,17,107,16,10
        CONTROL         "",IDC_CHECKMODE,"Button",BS_AUTOCHECKBOX,15,38,8,10
    END
    Pour en revenir à ta méthode pour importer une ressource dialog, mon soucis est que VS plante dès que j'essaye (avec cette dialog ou n'importe quelle autre ) dès que je fais "Insert copy ..."

  20. #20
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    hé bien déjà je dirais qu'il n'y a pas de richedit sous windows mobile.
    la liste des contrôles autorisés est celle de la boite d'outils dans l'éditeur de ressources.
    Tu constateras que la liste n'est pas la même qu'un projet Windows.

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

Discussions similaires

  1. [Runtime] Problème avec la méthode 'exec'
    Par regisba dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 25/08/2006, 13h36
  2. Problème avec la méthode request.form()
    Par sam.fet dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2006, 17h11
  3. [POO] Problème avec setInterval/méthodes d'écriture
    Par Lpu8er dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 15h37
  4. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  5. Problème avec la méthode pack()
    Par tomca dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 10h58

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