begin process at 2010 02 10 07:10:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

detecter la fermeture


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

detecter la fermeture

dimanche 28 octobre 2007 à 16:58:02 | detecter la fermeture

elpens

Bonjour,

J'aimerais savoir quand un utilisateur clique sur la croix de fermeture de mon application. Comment puis-je procéder?

(J'utilise les "form" de Visual C++ Express)

Merci

 ElpenS

dimanche 28 octobre 2007 à 18:16:00 | Re : detecter la fermeture

racpp

Administrateur CodeS-SourceS
Salut,
Au clic sur la croix de fermeture d'une fenêtre, la procédure WndProc de cette fenêtre reçoit le message WM_CLOSE. Il suffit donc de traiter ce message. Regarde les exemples de sources du site.

dimanche 28 octobre 2007 à 19:11:16 | Re : detecter la fermeture

BruNews

Administrateur CodeS-SourceS
Le 1er msg sera WM_COMMAND - IDCANCEL sur une dialogbox.

ciao...
BruNews, MVP VC++
lundi 29 octobre 2007 à 10:07:00 | Re : detecter la fermeture

elpens

Hello,

J'ai testé ce que vous m'avez dit mais cela ne fonctionne pas...

J'ai dans le .h:

protected

: static void WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);Et dans le .cpp:

void

Main::WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   
switch(message)
   {
   case WM_QUIT:
      Application::Exit();
   case WM_CLOSE:
      Application::Exit();
  }
}
Cependant, je ne passe jamais dans cette méthode... Ne dois-je pas la lier avec ma forme?

Merci

 ElpenS
lundi 29 octobre 2007 à 10:25:06 | Re : detecter la fermeture

gamemonde

Membre Club
brunews a deja dit sur un dialog c'est different . et commence cela il y du code dans le .h separe ce qui va dans le point h et l'implementation dans le point .cpp
lundi 29 octobre 2007 à 10:57:18 | Re : detecter la fermeture

elpens

Ok, donc j'ai fait:

LRESULT CALLBACK Main::WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

   switch(message)
   {
      case WM_COMMAND:
         switch(LOWORD(wParam))
         {
            case IDCANCEL:
               Application::Exit();
               return 0;
         }
      case WM_QUIT:
         Application::Exit();
         return 0;

      case WM_CLOSE:
            Application::Exit();
            return 0;
   }
}
Mais quand je clique sur la croix, je ne passe toujours pas dans cette méthode...

 ElpenS
lundi 29 octobre 2007 à 11:34:45 | Re : detecter la fermeture

BruNews

Administrateur CodeS-SourceS
case WM_COMMAND:
         switch(LOWORD(wParam))
         {
            case IDCANCEL:
               Application::Exit();
               return 0;
         }
     return 0; // MANQUANT DANS TON CODE
etc....

ce qui ne devrait pas changer grand chose de ton exemple.

C'est quoi la plus-value de compliquer le code API avec des classes et méthodes ?

ciao...
BruNews, MVP VC++
lundi 29 octobre 2007 à 11:42:06 | Re : detecter la fermeture

elpens

C'est quoi la plus-value de compliquer le code API avec des classes et méthodes ?
- Simplement pour une question de lisibilité...

Mais je ne capte pas tout...

Pourquoi lorsque je clique sur cette *"@#ç"+ de croix, je ne passe pas dans cette méthode???

Merci

 ElpenS
lundi 29 octobre 2007 à 14:04:34 | Re : detecter la fermeture

elpens

Réponse acceptée !
Bon, après une longue, très longue cogitation, j'ai trouvé...

C'est peut-être fait très bizarrement, mais ça fonctionne...

J'ai fait:

protected

: virtual System::Void OnClosing(System::ComponentModel::CancelEventArgs^ e) override;Dans le .h et Application::Exit() dans le code...


 ElpenS
lundi 29 octobre 2007 à 14:20:19 | Re : detecter la fermeture

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

Ce sabir interprété te semble vraiment plus lisible ?

On va comparer:
#include <windows.h>
#include "resource.h"

BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  switch(mssg) {
    case WM_INITDIALOG:
      return 1;
    case WM_COMMAND:
      switch(wParam) {
        case IDOK:
         
          return 0;
        case IDCANCEL: EndDialog(hdlg, 0);
      }
  }
  return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
  hinst = hInstance;
  DialogBoxParam(hInstance, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0);
  return 0;
}

Ne me semble pas y avoir photo, on a tout devant les yeux illico prêt à être modifié.
Si on ahjoute les performances incomparables et l'indépendance de toute virtual machine, il n'y a rien qui puisse justifier l'interprété.

ciao...
BruNews, MVP VC++



Cette discussion est classée dans : fermeture, detecter


Répondre à ce message

Sujets en rapport avec ce message

Fermeture d'une fenetre [ par mindark ] Bonjour, j'aimerais que mon programme ferme une fenetre (un popup de Internet Explorer) automatiquement..J'ai essaye un faisant un FindWindow (NULL, " pb de fermeture de session ftp sous win 2000 ( InternetCloseHandle ) [ par mzhunix ] Bonjour,J'ai un probleme avec la fermeture des sessions ftp de window 2000 en appelant la fonction InternetCloseHandle je dois attendre plusieurs seco pb de fermeture de session ftp sous win 2000 ( InternetCloseHandle ) [ par mzhunix ] Bonjour,J'ai un probleme avec la fermeture des sessions ftp de window 2000 en appelant la fonction InternetCloseHandle je dois attendre plusieurs seco pb a la fermeture de win [ par stick ] bonjours,alors voilou, je fais une appli en utilisant l'api window, mais si je ferme windows sans quitter le programme auparavant, celui ci plante et fermeture de windows => applications? [ par spirit ] salut à tousJe voudrais savoir si en fermant windows à l'aide de mon programme, les autres applications fermeront également sans perte de données?et s detecter fichier dans un repertoire en C [ par tdeco ] SLTje souhaite détecter en C un fichier txt dans un répertoiretant le fichier n'as été détecté , le prog continu de le chercher.j'ai déja fait une bou detecter une fentre qui est minimized [ par bilal ] VGTAvoila j'arrive a desactiver la barre de tache la rendant invisble HWND TaskBar; TaskBar = FindWindow("Shell_TrayWnd",NULL); // barre des taches attente fermeture boite de dialogue Non Modal [ par lassiaf ] en win32,je cherche comment attendre la fermeture d'une boite de dialogue non modale qui est créée par le meme thread.Etant donnée que je ne peux pas detecter la pression d'une touche [ par ben01n ] salut toutle mondej'ai un prog qui effectue une boucle infinie avec des instructions à l'interieurmon problème est que je voudrais pouvoir appuyer sur detecter activite sur port impression [ par revelata ] Je souhaite detecter lorsque l'utilisateur lance une impression en C! Quelqu'un a une idée?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales