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] Passer d'une fenetre Domodal en ShowWindow


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Par défaut [MFC] Passer d'une fenetre Domodal en ShowWindow
    Bonjours a tous,

    J'ai un souci sur certain pc portable uniquement ...

    sous un bouton j'affiche une fenetre ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( m_pCourbeFrime->DoModal() == IDOK )
    j'instancie ma CDialog dans mon constructeur de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_pCourbeFrime	= new CSaisieNouvelleCourbe( "Frime", "Bearing travel (mm)", "Load (N)" );
    Sur la plupart des machines ce code fonctionne parfaitement.
    Par contre sur 2 pc portable la fonction DoModal me renvoi -1 (erreur de creation)

    j'ai voulu remplacer ce DoModal par ce que j'ai trouvé dans la FAQ, c'est a dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    m_pCourbeFrime->Create(CSaisieNouvelleCourbe ::IDD,this);
    m_pCourbeFrime->ShowWindow(SW_SHOW);
    Ma fenetre s'affiche (je n'ai pas tester sur les portable en question pour le moment)
    Mais je ne sais pas comment intercepter les click sur Ok ou Cancel de cette boite de dialog hors de la classe de ma CDialog.

    Je precise que j'instancie cette classe plusieurs fois dans le programe avec differrente données donc utiliser les OnOk() et OnCancel() de la CDialog est exclu.

    Pour resumer comment puis je remplacer cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( m_pCourbeFrime->DoModal() == IDOK )
    { //.......
    }
    Ou mieux encore ^^ comment faire fonctionner le code d'origine sur mes pc à problème !

    N'hesitez pas a me demander plus d'explication, je n'ai pas voulu ecrire 300 lignes sur ce pb ^^

    Merci d'avance !

  2. #2
    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,
    c'est tout le programme qui ne fonctionne pas correctement sur ces portables ou uniquement cette fenêtre ?
    tu utilises des activex sur cette fenêtre?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Par défaut
    Ca c'est de la rapidité !!! Merci

    Alors l'appli fonctionne c'est juste le click sur le bouton pour afficher, ca n'affiche rien mais l'appli tourne toujours.

    Sur cette dialog j'ai un ChartFx et un MsFlexGrid ensuite ce sont juste quelques boutons et CheckBox

    Dans mon .h j'ai ces controles particuliers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CListCtrl m_ListPoint;
    CGrid	m_grid;
    CWnd m_ChartFX;
    IChartFXPtr m_pChartFX;
    Le CGrid est
    class CGrid : public CMSFlexGrid

  4. #4
    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
    re,
    c'est ton activex ChartFx qui n'est pas distribué et/ou enregistré sur ces portables.
    pour enregistrer regsvr32 namocx.ocx

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Par défaut
    Oui c'est fait, je fais un package d'installation avec Installshield et j'enregistre cette fameuse dll à l'installation.

    "Regsvr32 CFX4032.ocx"

    Ce ChartFx est utilisé a d'autres endroit dans l'appli et fonctionne tres bien ...
    Le pb n'apparait que sur ces fameux boutons (le DoModal de ma CDialog)

    Bien vu, mais ce n'est pas ca

  6. #6
    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
    de toute façon ça doit tourner autour de ça :
    un activex pas enregistré,
    des dll systémes pas a jour : http://c.developpez.com/faq/vc/?page...stributeMFCApp

    vérifie quand même que les composants soient bien enregistrés...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Par défaut
    Oki merci, je vais jetter un coup d'oeil à tout ca et je vous tiendais au courant

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Par défaut
    Bonjour,

    alors j'ai verifié ces dll elles sont bien présente sur les machines à pb et elles ont la meme version que celles de ma machine de developpement.

    Auriez vous une autre idée ?

  9. #9
    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,
    non ,je persiste a penser que ça vient d'un contrôle ...
    tu peux faire l'essai suivant:
    un projet bidon MFC boite de dialogue. en mode MFC liées statiquement.
    (comme ça on supprime tous les doutes sur les MFC)
    tu places le fameux activex dessus...
    tu l'exécutes sur les fameuses machines .
    verdict ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Par défaut
    Alors je viens de faire ta demarche avec un ChartFx et un MsFlexGrid et en effet ca ne s'ouvre pas sur les postes a pb.

    Je vais faire 1 projet avec juste 1 Chart et un autre avec uniquement le Flex pour trouver lequel pause pb et je te tiens au courant dans l'apres midi des que je recupère un des portables

    J'en deduis donc, d'apres ce que tu m'as dit, que c'est bien une dll qui pause problème.

    Merci encore

    ==> C'est le MSFLEXGRID qui ne fonctionne pas !!!! je vais faire des recherches sur le net, voir si le pb à deja ete traité ...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 16
    Par défaut
    Bravo !

    Le pb a disparu sur 1 des poste, le MsFlexGrid n'etait pas enregistré il suffit de faire dans la console windows (cmd)
    Sur la 2eme machine cette commande a été refusé avec un code d'erreur, je vais chercher plus en profondeur mais je pense que le pb est réglé !

    Merci beaucoup et encore bravo à toi farscape !

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Par défaut
    L'enregistrement du controle ActiveX peut échouer si il lui manque une DLL et il n'y a pas de message pour informer.

    Exemple j'avais fait un ActiveX et l'enregistrement échouait systématiquement sur un portable, je me suis rendu compte que l'ActiveX en question était compilé en mode debug et il avait besoin des DLL MFC.
    Une recompilation en mode release (donc plus besoin des DLL MFC) et l'enregistrement s'est fait sans problèmes.

    A+

  13. #13
    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
    Citation Envoyé par Pseudo01
    L'enregistrement du controle ActiveX peut échouer si il lui manque une DLL et il n'y a pas de message pour informer.

    Exemple j'avais fait un ActiveX et l'enregistrement échouait systématiquement sur un portable, je me suis rendu compte que l'ActiveX en question était compilé en mode debug et il avait besoin des DLL MFC.
    Une recompilation en mode release (donc plus besoin des DLL MFC) et l'enregistrement s'est fait sans problèmes.

    A+
    ce n'est pas tout a fait exact ,les dll mFC en debug n'existent que sur un poste de développement,alors que celles en release sont déjà présentes sur la plupart des postes récents de windows 2000 a xp,sauf si tu as linker en mode statique les MFC, tu as distribué l'ocx en mode dll MFC partagées...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/01/2007, 16h45
  2. [MFC] suppression d'une fenêtre
    Par kabil.cpp dans le forum MFC
    Réponses: 5
    Dernier message: 03/05/2006, 15h16
  3. [MFC] Position d'une fenetre
    Par ni0urk dans le forum MFC
    Réponses: 3
    Dernier message: 24/11/2005, 17h27
  4. Réponses: 7
    Dernier message: 09/08/2005, 13h47
  5. Réponses: 3
    Dernier message: 03/02/2004, 17h34

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