SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: martinss en Domingo 28 de Enero de 2007, 05:43

Título: Problema Para Cerrar Aplicación
Publicado por: martinss en Domingo 28 de Enero de 2007, 05:43
Hola tengo un problema, tengo un code que es para que cuando hagan click en la "X" estando el proceso win.exe abierto salga un messagebox pidiendo confirmación para salir del programa o no, el mensaje sale pero cuando ponen "NO" el programa finaliza y no debe hacer eso

Código: Text
  1. LRESULT CALLBACK LaserInjectorDialog( HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam )
  2. {
  3.     switch ( Msg )
  4.     {
  5.     case WM_INITDIALOG:
  6.         return TRUE;
  7.  
  8.     case WM_COMMAND:
  9.     if(Check("win.exe")) MessageBox (NULL, "Seguro que quieres salir?",
  10.     "Mensaje", MB_YESNO|MB_ICONINFORMATION);
  11.     if (IDYES)
  12.     DestroyWindow(hDlg);
  13.     else
  14.   {
  15.   }
  16.   return 1;
  17.  
  18.   case WM_SYSCOMMAND:
  19.         if ( wParam == SC_MINIMIZE )
  20.         {
  21.             trayIcon.hWnd = hDlg;
  22.             Shell_NotifyIcon( NIM_ADD, &trayIcon );
  23.             ShowWindow( hDlg, SW_HIDE );
  24.             return TRUE;
  25.         }
  26.         break;
  27.     case WM_TRAY:
  28.         TrayIcon( (WPARAM)(hDlg), lParam );
  29.         break;
  30.     }
  31.    
  32.     return FALSE;
  33. }
  34.  
Título: Re: Problema Para Cerrar Aplicación
Publicado por: carmamezo en Domingo 28 de Enero de 2007, 12:11
Hola,
¿has probado a hacer lo siguiente?:
Código: Text
  1.  
  2. LRESULT CALLBACK LaserInjectorDialog( HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam )
  3. {
  4.    switch ( Msg )
  5.    {
  6.    case WM_INITDIALOG:
  7.        return TRUE;
  8.  
  9.    case WM_COMMAND:
  10.    if(Check("win.exe"))
  11.    {    
  12.           if(MessageBox (NULL, "Seguro que quieres salir?","Mensaje", MB_YESNO|MB_ICONINFORMATION) == IDYES)
  13.                     DestroyWindow(hDlg);
  14.    }
  15.  eturn 1;
  16.  
  17.   case WM_SYSCOMMAND:
  18.        if ( wParam == SC_MINIMIZE )
  19.        {
  20.            trayIcon.hWnd = hDlg;
  21.            Shell_NotifyIcon( NIM_ADD, &trayIcon );
  22.            ShowWindow( hDlg, SW_HIDE );
  23.            return TRUE;
  24.        }
  25.        break;
  26.    case WM_TRAY:
  27.        TrayIcon( (WPARAM)(hDlg), lParam );
  28.        break;
  29.    }
  30.    
  31.    return FALSE;
  32. }
  33.  
  34.  
Título: Re: Problema Para Cerrar Aplicación
Publicado por: Eternal Idol en Domingo 28 de Enero de 2007, 12:54
De la MSDN:
If an application processes this message, it should return zero.
Título: Re: Problema Para Cerrar Aplicación
Publicado por: martinss en Domingo 28 de Enero de 2007, 16:50
perfecto carmamezo :)
ahora una pregunta y si quiero agregarle otro proceso? con dos..
Título: Re: Problema Para Cerrar Aplicación
Publicado por: Eternal Idol en Domingo 28 de Enero de 2007, 17:05
Ahora me percato que tu codigo tenia:

Código: Text
  1.  
  2. if (IDYES)
  3.  
  4.  

Obviamente eso evalua siempre a TRUE al ser IDYES diferente de 0 y se ejecuta siempre la llamada a DestroyWindow ...

Si queres mas procesos a comprobar es muy simple:

Código: Text
  1.  
  2. if (  (Check("win.exe")) || (Check("whatever.exe")) || (Check("Other.exe")) )
  3. {
  4. }
  5.  
  6.  
Título: Re: Problema Para Cerrar Aplicación
Publicado por: martinss en Domingo 28 de Enero de 2007, 18:16
Funciona perfecto, gracias a los dos.  :hola: