begin process at 2012 02 12 18:05:29
  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 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 5,351 sec (4)

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