Activar una instancia anterior de una aplicación MFC basada en dialogos

Básicamente se trata de buscar la ventana con FindWindow y luego ponerla en primer plano llamando a SetForegroundWindow


Aqui va un poco de código…


BOOL COnlyOneApp::InitInstance()
{
   //#32770 es la clase de ventana que usan los cuadros de dialogo  MFC
   //OnlyOne es el titulo de la ventana
   HWND hwnd = ::FindWindow(«#32770», «OnlyOne»);
   if (hwnd != NULL)
   {
      SetForegroundWindow(hwnd);
   return FALSE; //Devolvemos FALSE para que acabe la ejecución.
   }
   //Resto de la función Instance…..
   .
   .
}

Lo habitual es registrar tu propia clase de ventana con nombre unico, y pasar NULL como segundo parametro a la función FindWindow.

Para saber como registrar tu propia clase de ventana en una aplicación basada en dialogos:
http://support.microsoft.com/kb/251059

Para ver un ejemplo de todo esto, existe un ejemplo que se llama ONETIME, en los ejemplo de Visual Studio.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *