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 :

CPropertySheet/Page : Impossible de surcharger ON_CLOSE


Sujet :

MFC

  1. #1
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut CPropertySheet/Page : Impossible de surcharger ON_CLOSE
    Salut,

    J'essaye de prendre la main lors l'user clique sur 'close' en utilisant une feuille de propriété et je n'arrive pas. Ni en gerant le 'close' dans les pages, ni dans la feuille.

    J'ai essayé sur une bête dialogue, là pas de problème.

    Merci pour toute infos.
    www.borninprovence.com

  2. #2
    Candidat au Club
    Inscrit en
    Mars 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Qu'es ce que tu veux faire exactement ??

  3. #3
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je veux lorsque l'user clique sur 'close' lui poser la question :
    - on sauve et on sort
    - on sauve pas et on sort
    - on sort pas
    www.borninprovence.com

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Je crois que tu peux pas utiliser On_close avec les cpropertysheet car tu as crée des pages modal (crée avec DoModal)
    alors soit t'essaie de créer ta propertysheet avec Create (moi j'y suis pas arrivé) soit tu cache les boutons crées automatiquement et tu crée tes propres boutons que tu pourra surcharger comme tu veux (c'est ce que j'ai fais...)

  5. #5
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Oui, mais ce que je veux c'est surcharger le 'close' du dialogue (la croix)
    www.borninprovence.com

  6. #6
    Membre régulier

    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Points : 105
    Points
    105
    Par défaut
    UP..

    Voilà, je suis confronté au même problème, à savoir que je souhaiterais surcharger la méthode qui est ratachée l'évènement "appui sur la croix en haut à droite" d'une CPropertySheet

    Même en surchargeant les méthodes DestroyWindow et celle rattachée à WM_CLOSE et WM_DESTROY, la fenêtre se ferme ce qui fait qu'il est par exemple impossible d'annuler le fait de quitter...

    Si quelqu'un a des exemples de codes pour ça, je suis preneur, d'autant que je n'ai tjs pas trouvé ni sur codeproject, ni sur code guru..

  7. #7
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    J'ai été confronté au même problème et :trouve: .
    La classe de base de mon appli hérite de CPropertySheet. J'ai simplement surchargé DestroyWindow :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    BOOL MonAppli::DestroyWindow() 
    {
           // ton code
           return CPropertySheet::DestroyWindow();
    }
    et voila, on passe par là quand l'utilisateur clique sur la petite croix en haut à droite.

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2002
    Messages : 35
    Points : 44
    Points
    44
    Par défaut
    Effectivement c'une fonctionnalité peu connu introduit dans MFC 4.0.
    Cela s'appelle Message reflection ...
    !!!
    Attention, le parent recoie l'event avt, il faut donc le traité pour qu'il ne fasse rien et le faire suivre. Si tu ne traites pas le ON_CLOSE. l'appli se fermera sans rien faire
    !!!
    J'espere que c clair ...

    Exemple avec le double clik :
    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
     
    class CMyListBox : public ClistBox
    {
    protected:
       afx_msg void OnDoubleClick ();
       DECLARE_MESSAGE_MAP ()
    };
     
    BEGIN_MESSAGE_MAP (CMyListBox, ClistBox)
       ON_CONTROL_REFLECT (LBN_DBLCLK, OnDoubleClick)
    END_MESSAGE_MAP
     
    void CMyListBox::OnDoubleClick ()
    {
       CString string;
       int nIndex = GetCurSel ();
       GetText (nIndex, string);
       MessageBox(string);
    }
    La simplicité est la sophistication suprême.

  9. #9
    Membre régulier

    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Points : 105
    Points
    105
    Par défaut
    Bon j'ai enfin trouvé une solution (si un modérateur pouvait mettre le tag résolu) :

    On peut surcharger OnClsoe etc.. mais dès lors que l'utilisateur clique sur la croix, le processus est engagé et on ne peut revenir en arrière quelques soient les manips qu'on fait, l'appli se ferme.

    Il faut donc surcharger
    void CMyPropertySheet::OnSysCommand(UINT nID, LPARAM lParam)
    et intercepter le code nID de la fermeture avec la croix. C'est un peu bourrin, mais ça fonctionne.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void CSheet::OnSysCommand(UINT nID, LPARAM lParam) 
    {
     
     
    if ( nID == CODE_CROIX )
    	OnQuit();
    else
    	CPropertySheet ::OnSysCommand(nID, lParam);
    }

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

Discussions similaires

  1. [SP-2010] Creation de page impossible
    Par mvr20 dans le forum SharePoint
    Réponses: 1
    Dernier message: 24/01/2011, 15h01
  2. Listage des liens d'une page impossible!
    Par randriano dans le forum Delphi
    Réponses: 6
    Dernier message: 08/05/2007, 13h39
  3. ouverture de pages impossible sous firefox
    Par decksroy dans le forum Windows Vista
    Réponses: 5
    Dernier message: 05/03/2007, 10h24
  4. [VBA-E] activation d'une page impossible
    Par corwin44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/07/2006, 16h25
  5. Accès direct à la page impossible (membres seulement)
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/02/2006, 20h18

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