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.