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 :

SAVE_AS à la fermeture d'un fichier connu


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 37
    Par défaut SAVE_AS à la fermeture d'un fichier connu
    Salut,

    Quand je quitte une fenetre dans une de mes applications, si j'ai fait un changement dans le Doc, on me demande si je veux enregistrer (jusque la tout est normal)

    J'aimerais, lorsque je souhaite enregistrer, ouvrir la boite de dialogue SAVE_AS mais je n'ai pas trouvé comment faire.

    J'ai essayé de récupérer les signaux : ID_FILE_SAVE, ID_FILE_CLOSE et ID_APP_EXIT avec la fonction "OnCommand (WPARAM,LPARAM)" mais aucun ne fonctionne. En fait, il semblerait que la fonction ne soit meme pas appelée.

    Si quelqu'un peut m'éclairer.... Merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    As-tu essayé ID_FILE_SAVE_AS ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 37
    Par défaut
    Meme résultat avec ID_FILE_SAVE_AS. Mais je pense que ce sera plutot la valeur que je donnerai à wParam des que j'aurais pu intercepter le signal adhéquat.

    [edit]

    voila ce que donne l'aide MSDN :

    ID_FILE_CLOSE: Closes the currently open document.
    CDocument::OnFileClose calls CDocument::SaveModified to prompt the user to save the document if it has been modified and then calls OnCloseDocument. All the closing logic, including destroying the document, is done in the OnCloseDocument routine.

    Note ID_FILE_CLOSE acts differently from a WM_CLOSE message or an SC_CLOSE system command sent to the documents frame window. Closing a window will close the document only if that is the last frame window showing the document. Closing the document with ID_FILE_CLOSE will not only close the document but will close down all frame windows showing the document.




    A priori, il faut bien que j'intercepte avant l'appel de la fonction CDocument::OnFileClose. Ca marche bien avec le ID_FILE_CLOSE quand je fais "fichier->Close" dans le Menu mais pas quand je sors avec la croix.



    [edit2]

    Pour le moment, la fonction "OnCommand" se situe dans le mainFrame.cpp. Je pense que c'est pour ca que le programme ne passe pas par cette fonction quand je ferme une fenetre secondaire. (en meme temps, quand je ferme la fenetre principale, je ne passe pas non plus par le OnCommand mais je vais quand meme dans le OnClose).

  4. #4
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    Dans ce cas là, MFC n'envoit pas de commande (c'est pas une action de l'utilisateur), il appelle directement les fonctions. Il faut que tu surcharges une fonction pour faire ta propre gestion, OnCloseDocument() par ex

    Là, pas le choix, faut que tu te plonges dans le source des MFC pour voir comment c'est géré.

    @+

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 37
    Par défaut
    YouHou!

    Et bien je reviendrai dans 1 ou 2 jours suivant mon état d'avancement. Merci en tout cas.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 37
    Par défaut
    Bon finalement c'est allé assez vite. Je pensais pas y arriver aussi facilement.

    Donc quand on ferme avec la croix, la premiere fonction appellée est (il me semble...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL CDocument::CanCloseFrame(CFrameWnd* pFrame)
    Donc en surchargeant cette fonction dans notre classe Doc, on peut faire ce qu'on veut.

    Merci pour votre aide, j'espere que je vais pouvoir finir tranquillement maintenant.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/08/2006, 10h39
  2. ouverture et fermeture d un fichier
    Par magnetic dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2006, 08h58
  3. fermeture d'un fichier ouvert avec la fonction shell
    Par julio02200 dans le forum Access
    Réponses: 10
    Dernier message: 19/06/2006, 10h58
  4. La fonction à la fermeture d'un fichier est exécutée 2 fois...
    Par Pierre Fauconnier dans le forum Access
    Réponses: 4
    Dernier message: 27/04/2006, 14h14
  5. [SimpleXML] Fermeture d'un fichier XML
    Par FlyByck dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 12/01/2006, 15h10

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