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]Menu systeme EnableMenuItem()


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [MFC]Menu systeme EnableMenuItem()
    Bonjour,

    J'ai un probleme dans une application avec les MFC et les fonctions EnableMenuItem() et GetSystemMenu().
    Dans une application, je desire empecher la fermeture d'une fenetre en grisant et desactivant la croix du menu de la fenetre
    et de l'application.

    je crée donc une fonction DeleteMenuSys() dans CMainFrame et une autre dans la CChildFrame.
    les deux sont pratiquement identiques et utilisent EnableMenuItem() et GetSystemMenu().
    Lors de l'execution, les X sont bien grisées et, lorsque je clique dessus, rien ne se passe au demarrage (ce qui est normal).
    Lorsque je met la fenetre client en pleine page (clic sur le rectangle du menu systeme), alors, si je clique sur la croix, bien
    que grisée, la fenetre se ferme quand même !...

    Quelqu'un aurait-il eut le probleme ?
    De quoi cela peut il provenir ?

    Merci pour votre aide.

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut, je te conseille de proceder autrement:
    intercepter le message de fermeture par la croix et de refuser la fermeture si
    il y a lieu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // ----------------------------------------------------------------------------
    void MyMainFrame::OnSysCommand(UINT nID, LPARAM lParam) 
    {
    	// TODO: Add your message handler code here and/or call default
    	// test sur la fermeture de l'application
    	if(nID==SC_CLOSE)
    	{
               if(m_bNotOkForClose) return;
            }
    	CMDIFrameWnd::OnSysCommand(nID, lParam);
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [MFC]Menu systeme EnableMenuItem()
    Comment interceptes-tu le message correspondant à OnSysCommand() dans une fenetre ?

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    meme chose au niveau de la mdichild de la fenetre .


  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [MFC]Menu systeme EnableMenuItem()
    C'est-à-dire ?

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    apres verifications ,
    le code donne fonctionne bien pour empecher la croix sur l'application pour les views formview etc ...
    2 solutions passer par la fontion
    virtual BOOL CanCloseFrame( CFrameWnd* pFrame ); de la classe document
    dans ton document template (CMultiDocTemplate ou CSingleDocTemplate)
    precise une classe document dont cette fonction est surchargee.
    ou alors la gestion du message SC_CLOSE sur la mdi a travers le message
    ON_WM_SYSCOMMAND de la mdichildwnd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    pDocument = new CMultiDocTemplate(
    		IDR_WSGTYPE,
    		RUNTIME_CLASS(CMyDoc),   // redefinir CanCloseFrame sur cette classe
    		RUNTIME_CLASS(MyMDIChildWnd), // standard MDI child frame
     ou reprendre la main sur onsyscommand sur cette classe
    	RUNTIME_CLASS(CMyFormView));
    	AddDocTemplate(pDocument);

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [MFC]Menu systeme EnableMenuItem()
    C'est OK, merci beaucoup, grâce à l'utilisation de :

    OnSysCommand(UINT nID, LPARAM lParam)
    et/ou CanCloseFrame( CFrameWnd* pFrame )

    je vai reussir à regler mon probléme de fermeture de fenetre.

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    si c'est bon n'oublie pas de mettre resolu

Discussions similaires

  1. [MFC] Menu inaccessible après changement de nom
    Par Philippe320 dans le forum MFC
    Réponses: 5
    Dernier message: 07/12/2005, 22h10
  2. [MFC] Menu dynamique
    Par barthelv dans le forum MFC
    Réponses: 7
    Dernier message: 31/05/2005, 10h44
  3. [MFC] Menu système d'un dialog box
    Par tonyskn dans le forum MFC
    Réponses: 2
    Dernier message: 24/05/2004, 21h50
  4. Réponses: 3
    Dernier message: 24/05/2004, 16h20
  5. Hauteur en pixel du menu systeme de la Form ?
    Par hepar dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/02/2004, 10h45

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