grorel
Messages postés6Date d'inscriptionvendredi 20 juillet 2007StatutMembreDernière intervention30 octobre 2007
-
30 oct. 2007 à 10:41
grorel
Messages postés6Date d'inscriptionvendredi 20 juillet 2007StatutMembreDernière intervention30 octobre 2007
-
30 oct. 2007 à 16:35
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.
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.
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.
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).
Donc voila, je bloque. Si quelqu'un peu m'aider....
la fonction OnCommand est une fonction de la classe CWnd, on peut facilement la surcharger dans la MainFrame du Projet. Si vous ne lavez pas surcharger dans la MainFrame et que vous l'appellliez directement en CWnd, il risque de se produire l'erreur
"impossible d'atteindre la fonction protected de CWnd"
grorel
Messages postés6Date d'inscriptionvendredi 20 juillet 2007StatutMembreDernière intervention30 octobre 2007 30 oct. 2007 à 16:35
Salut, c'est remoi et je fais un double post parce que j'ai dis une connerie
Voila le code le plus simple que j'ai trouvé. Il teste l'extension des
fichiers lors de l'enregistrement (par clic ou lors de la fermeture).
Si le fichier n'est pas de l'extension IMG, le programme propose un
SAVE_AS avc cette extension.
D'abord dans le Doc.cpp
<!-- BEGIN TEMPLATE: bbcode_code -->
<!-- END TEMPLATE: bbcode_code -->Voila, avec ca, je pense avoir pris
en compte tous les cas de sauvegarde et de fermeture pour que la
fenetre SAVE_AS s'ouvre pour tout type de fichier sauf IMG.