|
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.
|