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 de fermeture de fenêtre.


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 70
    Par défaut Problème de fermeture de fenêtre.
    Bonjour,

    dans une classe associé à une fenêtre, je crée un pointeur privé sur un objet usb_comp:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    class CTelUSBView : public CFormView
    {
    protected: // création à partir de la sérialisation uniquement
    	CTelUSBView();
    	DECLARE_DYNCREATE(CTelUSBView)
     
    public:
    	enum{ IDD = IDD_TELUSB_FORM };
     
    // Attributs
    public:
    	CTelUSBDoc* GetDocument() const;
     
    // Opérations
    public:
     
    // Substitutions
    public:
    	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // Prise en charge de DDX/DDV
    	virtual void OnInitialUpdate(); // premier appel après la construction
     
    // Implémentation
    public:
    	virtual ~CTelUSBView();
    #ifdef _DEBUG
    	virtual void AssertValid() const;
    	virtual void Dump(CDumpContext& dc) const;
    #endif
     
    protected:
     
    // Fonctions générées de la table des messages
    protected:
    	DECLARE_MESSAGE_MAP()
     
    private:
    	//Variable à sauvegarder dans le fichier.
    	char Id_Tel;
    	CBoutonArray Btn_Syst;
    	CBoutonArray Btn_Video;
    	CBoutonArray Btn_Son;
    	CBoutonArray Btn_Expl;
    	CBoutonArray Btn_Souris;
    	CString ch_video;
    	CString ch_audio;
    	CString ch_explorateur;
    	CFile F_Btn; //Sauvegarde du profil 
    	bool mode_souris;
    	usb_comp *TelUsb;
    public:
    	afx_msg void OnTimer(UINT_PTR nIDEvent);
    	long OnInitAlgo(WPARAM wparam,LPARAM lparam);
    	void Tempo();
    	void Serialize(CArchive& ar);
    	afx_msg void OnFileSave();
    	afx_msg void OnIdTel();
    	afx_msg void OnApplicationSouris();
    	afx_msg void OnDestroy();
    	afx_msg void OnApplicationVideo();
    	afx_msg void OnApplicationMusique();
    	afx_msg void OnApplicationExplorateur();
    };
    Ce pointeur est initialisé à une valeur NULL et est initialisé dans oninitialupdate.
    Dès que je connecte le périphérique USB associé, un pointeur contenu dans l'objet passe d'une valeur NULL à une addresse de périphérique.

    Mon problème est une erreur de fermeture de l'application :
    Quand le périphérique est déconnecté, pas de souci.
    Quand celui-ci est connecté, le débogueur me signale qu'une fermeture d'objet n'a pas lieu au bon emplacement.

    J'ai essayé de détruire l'objet usb_comp dans onClose, onDestroy, mais l'erreur survient avant l'exécution de l'erreur.

    Avez-vous une suggestion?
    Merci

  2. #2
    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
    Tu peux éventuellement surcharger PreTranslateMessage afin d'intercepter ton WM_CLOSE et faire ton traitement le plus tôt possible.

    Bonne chance !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 70
    Par défaut
    Voici le message d'erreur exact :

    Le contexte d’activation en cours de désactivation n’est pas le contexte activé le plus récemment.
    J'ai essayé PreTranslateMessage mais idem, je ne rentre pas avec le message WM_CLOSE dans cette fonction avant l'erreur.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 70
    Par défaut
    J'ai trouvé que lorsque je quitte l'application, la fonction OnClose de la MainFrame est lancé puis l'erreur arrive avant la fermeture de la vue.
    Mon idée est de créer un message dans la vue puis de lancer le message à partir de la fonction OnCLose de MainFrame.

    Comment faire cela.
    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AfxGetMainWnd()->GetActiveWindow()->SendMessage(WM_USER+500,0,0);
    .
    Cela n'envoie pas de message vers la vue.
    Avez-vous une autre méthode.

  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

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

Discussions similaires

  1. [WD14] Problème de fermeture de fenêtre
    Par LuckyLuke56 dans le forum WinDev
    Réponses: 11
    Dernier message: 23/06/2011, 17h55
  2. Problème de fermeture de fenêtre
    Par L1011 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 25/02/2009, 19h16
  3. Problème de fermeture de fenêtres
    Par zintelix3d dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 12/08/2008, 16h49
  4. API Win32 problème de fermeture de fenêtre
    Par Ano dans le forum Windows
    Réponses: 3
    Dernier message: 13/12/2006, 21h37
  5. Problème de fermeture de fenêtre
    Par TheReturnOfMuton dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 15/06/2006, 12h07

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