Bonjour,
Je voudrais savoir comment faire en sorte que l'application que je développe s'arrête d'elle même si elle n'a reçu aucune commande au bout de 5 minutes, à la manière d'un économiseur d'écran.
Merci d'avance.
Bonjour,
Je voudrais savoir comment faire en sorte que l'application que je développe s'arrête d'elle même si elle n'a reçu aucune commande au bout de 5 minutes, à la manière d'un économiseur d'écran.
Merci d'avance.
salut,
tu mets en place un timer de 5 mn (voir faq);
dans le message réponse tu fermes l'application:
si il y a une commande tu kill le timer et tu le remet en place quand la commande est terminée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 AfxGetMainWnd()->PostMessage(WM_CLOSE);
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Salut,
Comment, au sein de l'appli, je détecte la réception d'une commande ?
salut,
quel est le sens du mot commande pour toi ?
sinon tu peux mettre en place ton timer dans onidle
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Salut,
pour moi, c'est ce que je mets en général dans :
Par exemple, au bout de 5 minutes , si aucune commande n'a été lancée ( toute classe confondues - CWinApp, CWnd etc ), il faut que l'appli s'arrête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BEGIN_MESSAGE_MAP(.....,......) ON_COMMAND( ID_LACOMMANDE,.........) END_MESSAGE_MAP()
Salut,
Tu peux surcharger la methode OnCmdMsg de ta MainFrame (objet dérivé de CFrameWnd)
Si ton appli est une MDI, faut mettre ça plutot dans CMDIChildWnd (CChildFrame)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 BOOL CMainFrame::OnCmdMsg(UINT nID,int nCode,void *pExtra,AFX_CMDHANDLERINFO *pHandlerInfo) { if (nCode==CN_COMMAND && pExtra==NULL) InitTimer(); // initialiser le timer ici car une commande est arrivée return CFrameWnd::OnCmdMsg(nID,nCode,pExtra,pHandlerInfo); }
Ca marche très bien, je m'en suis déjà servi pour d'autres raisons.
@+
Salut,
merci pour le tuyau.
Ca marche même dans la classe dérivée de CWinApp.
Ca réagit si je mets
par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if (nCode==IF_FILE_NEW && pExtra==NULL)
Par contre, quelle est la fonction du *pExtra ?
Merci encore.![]()
Rectification
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if (nID==IF_FILE_NEW && pExtra==NULL)![]()
Si tu le mets dans CWinApp tu risques de ne pas voir toutes les commandes.
Le routage des commandes commence par la MainFrame et termine par CWinApp. Si entre temps la commande est traitée, elle n'arrivera pas jusqu'à CWinApp. Mais dans le cas du ID_FILE_NEW c'est ok, puisqu'il n'y a que CWinApp qui traite cette commande par défaut.
Le pExtra est un paramètre pour passer un pointeur sur une classe du type CCmdUI pour les mises à jour des états de bouton / menu ... Si pExtra!=NULL, il s'agit alors d'une mise à jour et non d'une action.
Si tu ne souhaites qu'intercepter ID_FILE_NEW, tu peux surcharger OnCommand(), c'est plus simple. Je pensais que tu voulais intercepter tout type de commande ...
@+
Effectivement, je viens de m'en rendre compte comme pour la commande "imprimer" entre autres.
Tu avais bien compris que je voulais intercepter toutes les commandes mais je me suis trop hâté pour répondre.
Mais maintenant, je sais dans quelle direction chercher,
Merci encore![]()
il te reste a gérer le cas ou le programme est lancé et pas de commandes dans les 5 mn, si ce cas existe bien sur ...
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager