Inicio

   Enlaces

   Articulos

   Noticias

 
 

Leer las opciones pasadas al abrir un programa mediante MFC

25-07-2005

Leer las opciones pasadas al abrir un programa mediante MFC

Para saber al ejecutar un programa que opcines se han pasado, tales como abrir un archivo, imprimir un archivo, archivo nuevo, o otro tipo de acción requerida mediante un comando DDE, usaremos la clase CCommandLineInfo, y usaremos los atributos de CCommandLineInfo m_nShellCommand y m_strFileName, para saber qué acción realizar y sobre qué archivo.

Para ver que pone en la de comandos de la aplicación lo haremos en la función CTuAplicacionApp::InitInstance() deribada de CWinApp.

ejemplo:

BOOL CTuAplicacionApp::InitInstance()
{
   // ...

   CMultiDocTemplate* pDocTemplate;
   pDocTemplate = new CMultiDocTemplate(
      IDR_TuAplicacionTYPE,
      RUNTIME_CLASS(CTuAplicacionDoc),
      RUNTIME_CLASS(CMDIChildWnd),       
      RUNTIME_CLASS(CTuAplicacionView));
   AddDocTemplate(pDocTemplate);

   // Crea main MDI Frame window.
   CMainFrame* pMainFrame = new CMainFrame;
   if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
      return FALSE;
   m_pMainWnd = pMainFrame;

   // activa file manager drag/drop y DDE Execute open
   EnableShellOpen();
   RegisterShellFileTypes();
   // ...

   // Muestra la pantalla principal usando en parametro nCmdShow
   // y actualiza la ventana
   pMainFrame->ShowWindow(m_nCmdShow);
   pMainFrame->UpdateWindow();

	// Aquí está el código que nos interesa
	// Creamos el objeto CCommandLine
	CCommandLineInfo cmdInfo;
	// Capturamos los parametros pasados por la linea de comandos
	ParseCommandLine(cmdInfo);
	// Procesamos la linea de comandos.
	// Si no es una line valida InitInstance sale con FALSE
	if (!ProcessShellCommand(cmdInfo))
		return FALSE;

	// Si de ha pasado un archivo realizamos
	// las operaciones que queramos.
  if(cmdInfo.m_strFileName!="") {
		//...
		
		// Podemos usar entre otras las variables:
		// - m_nShellCommand  
		// - m_strFileName
		// Con ellas sabemos que archivo se a pasado
		// y para que.
		
		//..
  }
  
   // ...
}

Clases:

CCommandLineInfo: Este objeto nos permitirá acceder a la línea de comandos.

Funciones:

ParseCommandLine(CCommandLineInfo cmdInfo) Capturamos los párametros pasados por la línea de comandos.

Métodos:

m_strFileName Nombre del archivo pasado en la línea de comandos a abrirse o imprimirse, vacio si el comando es FileNew o FileDDE.

m_nShellCommand. Informa del tipo de acción que se solicta al abrir el programa, puede ser una de las siguientes:

-CCommandLineInfo::FileNew No se ha indicado ningún archivo.

-CCommandLineInfo::FileOpen Se ha indicado un archivo para abrir.

-CCommandLineInfo::FilePrint Se ha indicado un archivo para imprimir.

-CCommandLineInfo::FilePrintTo Se ha indicado un archivo para imprimir en una impresora determinada.

-CCommandLineInfo::FileDDE Envía un comando DDE para ser ejecutado por la aplicación, este comando puede ser del tipo imprimir un archivo, para más información mirar CWinApp::OnDDEComand.

-CCommandLineInfo::FileNothing Deshabilita la ventana de nueva ventana hija MDI al empezar.

 
 

Página personal de Fernando Marín.