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] Court circuiter les fonctions automatiques MFC


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2003
    Messages : 24
    Points : 27
    Points
    27
    Par défaut [MFC] Court circuiter les fonctions automatiques MFC
    Salut tout le monde,

    J'ai un petit problème tout con, mais je n'arrive pas à trouver de réponse. Je souhaiterais empêcher Visual de prendre en charge tout seul la sauvegarde du fichier courant dans une appli SDI lorsque l'utilisateur clique sur Enregistrer, sur l'icône correspondante ou encore sur Enregistrer Sous... (Il faut que je fasse quelques traitements préalables avant de lancer effectivement l'enregistrement).

    J'ai déjà redéfini le OnSaveDocument() dans le document et créé un handler sur le menu ID_FILE_SAVE de la fenêtre principale. Le hic c'est qu'il ne passe pas dans mon handler lorsque l'on clique sur le menu correspondant. Ca marche pourtant avec le ID_FILE_OPEN. Voilà donc si quelqu'un a une idée, je suis preneur.

    Je travaille sous Visual C++ 6.0.

    Merci d'avance
    Air'V

  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
    bonjour,
    reprenons:
    CDocument::OnSaveDocument
    virtual BOOL OnSaveDocument( LPCTSTR lpszPathName );
    sur la classe CDoc sera appelée apres selection des id
    ID_FILE_SAVE
    ID_FILE_SAVE_AS
    sur l'ouverture d'un fichier ça sera la fonction du document:
    CDocument::OnOpenDocument
    virtual BOOL OnOpenDocument( LPCTSTR lpszPathName );
    qui sera appelée apres selection du fichier en reponse à l'id ID_FILE_OPEN.


  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2003
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    En fait, les traitements que je dois effectuer sont en amont, je dois pouvoir appeler des fonctions de ma clas CMainFrame avant que les fonctions de la classe doc soient appelées. Du coup, j'ai ajouté une fonction handler du OnClick sur le ID_FILE_SAVE dans le CMainFrame, mais ca ne passe pas dedans...
    Air'V

  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
    salut,
    si tu veux juste intercepter le message sur la mainframe avant le traitement normal :appel de la boite de sauvegarde etc...
    tu peux faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam) 
    {
    	// TODO: Add your specialized code here and/or call the base class
    	if(wParam==ID_FILE_SAVE)
    	{
    		AfxMessageBox("coucou");
    	}
    	return CMDIFrameWnd::OnCommand(wParam, lParam);
    }
    ou plus naturellement intercepter le message ID_FILE_SAVE sur la classe Document .
    voir aussi dernier post sur le post it de la faq.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2003
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    Ok, j'avais pas pensé au OnCommand pour remonter plus haut dans les appels de messages...
    C'est en l'occurence plus pratique dans mon cas pour appeler les pré-traitements que je fasse ça dans le mainframe.

    Merci c'est nickel !
    Air'V

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/12/2005, 09h39
  2. [MFC] Pointeur this et fonctions statiques
    Par Yellowmat dans le forum MFC
    Réponses: 5
    Dernier message: 08/02/2005, 10h15
  3. Réponses: 15
    Dernier message: 18/01/2005, 23h18
  4. [MFC] problème avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    Réponses: 12
    Dernier message: 11/06/2004, 15h31
  5. [MFC][Toolbar] Aligner les toolbars
    Par 6psyk9 dans le forum MFC
    Réponses: 3
    Dernier message: 17/05/2004, 21h58

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