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 :

Création Fenetre Indépendante


Sujet :

MFC

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut Création Fenetre Indépendante [erreur de zone de donnée mémoire]
    Salut, je voudrais réaliser une interface de Setup pour ma dll.

    Cette interface doit s'ouvrir et laisser la fentre mère libre.
    Je souhaite qu'elle contienne un Dialog de ma resouce.

    Comment je fais pour quelle souvre indépendamment, donc avec un bouton dans la barre de tache ? (c'est peux etre pas un CDialog ... Je ne sais pas)

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Rebonjours

    Ca y est, mon interface marche. Le problème était que dans les propriétés du "grand dialog", j'avais l'option "Disabeled" de cochées.
    Cela fais 15 jours que je suis la dessus.

    Merci à ceux qui ont quant même tentés de trouver le problème.






    Maintenant que ca marche, je voudrais savoir un ou deux points.
    - Est ce que c'est possible que lorsque la fenêtre s'ouvre, cela soit une autre "Frame (equivalant en java désolé)", avec son propre bouton en barre des tâches.
    - Est ce que c'est possible que lorsque ca s'ouvre, l'utilisateur puisse naviguer sur les deux interfaces.

    merci

  3. #3
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Est ce que c'est possible que lorsque la fenêtre s'ouvre, cela soit une autre "Frame (equivalant en java désolé)", avec son propre bouton en barre des tâches.
    - Est ce que c'est possible que lorsque ca s'ouvre, l'utilisateur puisse naviguer sur les deux interfaces.
    Tu crées un projet MTI (multiple top-level documents interface)
    C'est une sorte de SDI avec plusieurs fenêtres cadres principales et leurs propres bouton sur la stask-bar

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    D'accord, c'est pas le même type de fenêtre.

    Je ne vois pas comment on crée un tel projet (j'ai regardé dans le wizard de nouveau projet, et ca n'y était pas).
    Est ce que cela implique beaucoup de différence ? Car comme c'est pas un point majeur, je ne sais pas si ça en vaut la peine.

    Par contre le fait de pouvoir jongler avec les deux fenêtres, ce serait beaucoup plus intéressant. Est ce que je doit faire le projet que tu me dis pour pouvoir faire ça ? (après réflexion je pense que oui mais bon, j'ai un doute).

    merci



    édit : Après quelque recherche, j'ai trouve sur msdn qu'il ne fallait pas étandre la même class ? Il faudrait que j'étand CFormeView.
    Je chauffe ou pas ?
    Avec ca j'ai fais un essaye, et comme je le pensait c'est plus compliqué que cela car cette classe n'a pas le même prototypage.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    J'ai créé une nouvelle classe CFormView pour tester.
    Je n'arrive pas a trouver l'équivalant de ce que j'avais fais avec le CDialog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    extern "C" void WINAPI AfxShowDlg(CWnd* pParent)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
    	CDllDialog dlg(NULL);
    	dlg.DoModal();
    	dlg.ShowWindow(SW_SHOW);
    }
    voila ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    extern "C" void WINAPI AfxShowDlg(CWnd* pParent)
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
    	CDllView view();
    	view.
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    C'est bon j'ai un truc qui tourne du tonerre.


    C'est pas une autre fenêtre (avec son icone dans la barre des tâches) mais je peux accéder au deux fenêtre indépendemment.


    Est ce que c'est utile que je face un recapitulatif de ce que j'ai fait pour des personnes qui voudraient créer une interface dans une DLL ou c'est pas la peine ?

    Pour monsieur nico-pyright(c) ou farscape.

  7. #7
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
            CDllDialog dlg(NULL);
            dlg.DoModal();
            dlg.ShowWindow(SW_SHOW);
    est faux
    c'est soit un DoModal, soit un Create suivi d'un ShowWindow

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Ok cela explique une erreur que j'avais quant je fermais la fenetre.

    Donc maintenant que ca marche, j'ai un probleme sur mes variable static de la DLL, dont celle de l'interface.

    voici l'algorithme :
    Démarage de l'interface principale.
    - initialisation de la DLL,DLLdlg = NULL
    - si on clique sur le bouton Setup
    - on ouvre la seconde interface DLLdlg = new DLLdialog
    - Si on ferme DLLdlg = NULL (or ici, quelque chose a déja remis a NULL les valeurs
    - Si on reclique sur le bouton Setup
    si(DLLdlg==NULL) DLLdlg = new DLLdialog ... (or DLLdlg est différent de NULL)

    Donc ca me pose un probleme car je ne sais pas si j'ai pas plusieurs blocs de Donnée.
    - Un pour quant j'ouvre l'interface
    - un quant je ferme l'interface

    D'ou cela pourrait venir.
    De plus, j'ai testé avec deux variable ou je suis sur de les modifié que dans le constructeur et le destructeur, et les deux valeurs changent à même temps avec des points d'arrêt sur chacunes d'elles (C'est pour cela que je pense que les zones de donnée s'écrase mutuellement).

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Personne ne sait d'ou cela pourrais venir ?

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Après quelque test, je m'appercois que les variables n'ont pas les même valeur lorsque je les appelles depuis les méthodes de ACTrait ou de DllDialog.

    ACTrait est ma Dll est elle contient la classe DllDialog qui est l'interface.


    D'ou cela peut il venir ?
    Que faire pour y remédier ?

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Une autre question ou quelqu'un pourra peut être réponde :

    Lorsque l'on lance une interface à partir d'une fonction, et que l'interface est indépendante, est ce qu'ils utilise la même zone de donnée ou est ce qu'il y a duplicata comme pour les processus?

    Car cela pourrait expliquer des choses. Comment faire en sorte que les données soient sauvegardé au même endroit ?

  12. #12
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Par défaut
    Bon ben comme j'ai l'impression que je parle un peu tout seul !!!

    Si quelqu'un tombe sur le meme problème, voila comment j'ai fais :

    Seuil est déclaré comme ceci dans le DLL.h: Code précedent de DLLDialog.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    void CDllTraitDialog::OnSeuilMoins() 
    {
    	Seuil--;
    	CString st = "";
    	st.Format ("%ld",Seuil);
    	SetDlgItemText(IDC_SEUIL,st);
    }
    nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    void CDllTraitDialog::OnSeuilMoins() 
    {
    	AfxDecTraitSeuil();
    	CString st = "";
    	st.Format ("%ld",AfxGetTraitSeuil());
    	SetDlgItemText(IDC_SEUIL,st);
    }
    et la fonction qui va avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    extern "C" void		WINAPI	AfxDecTraitSeuil()
    {
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        Seuil--;
    }
    Comme explication, je pense que la zone memoire des variable n'est pas la même entre celle de la DLL et celle de l'interface de la DLL car l'interface doit être créé avec un nouveau processus.

    Voila cela ne vaut pas grand chose, mais je ne vois pas d'autre explication !!!

Discussions similaires

  1. Creer deux fenetres indépendantes dans le meme code
    Par andrebernard dans le forum Débuter
    Réponses: 0
    Dernier message: 25/04/2011, 17h55
  2. Problème création nouvelle fenetre via JmenuBar
    Par willypoon dans le forum Graphisme
    Réponses: 4
    Dernier message: 01/08/2007, 22h39
  3. création de fenetre mfc
    Par oclone dans le forum MFC
    Réponses: 2
    Dernier message: 22/12/2006, 13h43
  4. Réponses: 21
    Dernier message: 09/02/2005, 08h35
  5. [JFrame] Création d'une fenetre plus grande que l'ecran
    Par thetoctoc dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 23/09/2004, 11h05

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