CCommandLineInfo类
类CCommandLineInfo用于分析启动应用时的命令行参数。
MFC应用一般都会在它的应用对象中使用函数InitInstance创建这个类的一个本地实例。然后把该对象传给CWinApp::ParseCommandLine,ParseCommandLine又重复调用ParseParam填充CCommandLineInfo对象。最后,CCommandLineInfo对象被传给CWinApp::ProcessShellCommand来处理命令行参数和选项。
类CCommandLineInfo可以用来封装以下的命令行选项和参数:
说明:
调用这个函数以解析命令行并将参数发送到CCommandLineInfo::ParseParam,每次一个。
当你通过AppWizard开始一个新的MFC项目时,AppWizard将会创建一个Ccommand-LineInfo的本地实例,然后在InitInstance成员函数中调用ProcessShellCommand 和 ParseCommandLine。命令行的过程描述如下:
1.在InitInstance中被创建之后,CCommandLineInfo对象被传递给ParseCommandLine。
2.随后ParseCommandLine反复调用CCommandLineInfo::ParseParam,每次解析出一个参数。
3.ParseParam填充CCommandLineInfo对象,随后该对象被传递给ProcessShellCommand。
4.ProcessShellCommand处理命令行参数和标志。
注意:
如果需要的话,你可以直接调用ParseCommandLine。
有关命令行标志的描述参见CCommandLineInfo::m_nShellCommand。
说明:
这个成员函数被InitInstance调用,用以接收rCmdInfo所标识的CCommandLineInfo对象传递的参数,并执行指定的动作。
当你通过AppWizard开始一个MFC的新项目时,AppWizard将创建CCommandLineInfo的一个本地实例,然后在InitInstance成员函数中调用ProcessShellCommand和ParseCommandLine。命令行按照下面描述的路线传递:
1.在InitInstance中被创建以后,CCommandLineInfo对象将它传递给ParseCommand-Line。
2.随后ParseCommandLine反复调用CCommandLineInfo::ParseParam,每次解析一个参数。
3.ParseParam填充CCommandLineInfo对象,然后将之传递给ProcessShellCommand。
4.ProcessShellCommand处理命令行参数和标志。
CCommandLineInfo对象中用CCommandLineInfo::m_nShellCommand标识的数据成员属于下面的枚举类型,它在CCommandLineInfo类中定义。
enum{ FileNew,FileOpen,FilePrint,FilePrintTo,FileDDE,};
操作
数据成员
CObject |
└CCommandLineInfo |
类CCommandLineInfo用于分析启动应用时的命令行参数。
MFC应用一般都会在它的应用对象中使用函数InitInstance创建这个类的一个本地实例。然后把该对象传给CWinApp::ParseCommandLine,ParseCommandLine又重复调用ParseParam填充CCommandLineInfo对象。最后,CCommandLineInfo对象被传给CWinApp::ProcessShellCommand来处理命令行参数和选项。
类CCommandLineInfo可以用来封装以下的命令行选项和参数:
命令行参数 | 执行的命令 |
app | 建立新文件 |
app 文件名 | 打开文件 |
app /p 文件名 | 在缺省打印机上打印文件 |
app /pt 文件名 打印机 驱动程序 打印端口 | 在指定的打印机上打印文件 |
app /dde | 启动程序并等待DDE命令 |
app /Automation | 启动为一个OLE自动服务器 |
app /Embedding | 启动来编辑嵌入的OLE项 |
要处理其它的选项,可以从类CCommandLineInfo派生一个子类,然后覆盖函数ParseParam进行相应的处理。
CWinApp::ParseCommandLine
void ParseCommandLine( CCommandLineInfo& rCmdInfo );
参数:
rCmdInfo | 对CCommandLineInfo对象的引用。 |
说明:
调用这个函数以解析命令行并将参数发送到CCommandLineInfo::ParseParam,每次一个。
当你通过AppWizard开始一个新的MFC项目时,AppWizard将会创建一个Ccommand-LineInfo的本地实例,然后在InitInstance成员函数中调用ProcessShellCommand 和 ParseCommandLine。命令行的过程描述如下:
1.在InitInstance中被创建之后,CCommandLineInfo对象被传递给ParseCommandLine。
2.随后ParseCommandLine反复调用CCommandLineInfo::ParseParam,每次解析出一个参数。
3.ParseParam填充CCommandLineInfo对象,随后该对象被传递给ProcessShellCommand。
4.ProcessShellCommand处理命令行参数和标志。
注意:
如果需要的话,你可以直接调用ParseCommandLine。
有关命令行标志的描述参见CCommandLineInfo::m_nShellCommand。
CWinApp::ProcessShellCommand
BOOL ProcessShellCommand( CCommandLineInfo& rCmdInfo );
返回值:如果成功地处理了外壳命令,则返回非零值。如果InitInstance返回了FALSE,则返回0。
参数:
rCmdInfo | 对CCommandLineInfo对象的引用。 |
说明:
这个成员函数被InitInstance调用,用以接收rCmdInfo所标识的CCommandLineInfo对象传递的参数,并执行指定的动作。
当你通过AppWizard开始一个MFC的新项目时,AppWizard将创建CCommandLineInfo的一个本地实例,然后在InitInstance成员函数中调用ProcessShellCommand和ParseCommandLine。命令行按照下面描述的路线传递:
1.在InitInstance中被创建以后,CCommandLineInfo对象将它传递给ParseCommand-Line。
2.随后ParseCommandLine反复调用CCommandLineInfo::ParseParam,每次解析一个参数。
3.ParseParam填充CCommandLineInfo对象,然后将之传递给ProcessShellCommand。
4.ProcessShellCommand处理命令行参数和标志。
CCommandLineInfo对象中用CCommandLineInfo::m_nShellCommand标识的数据成员属于下面的枚举类型,它在CCommandLineInfo类中定义。
enum{ FileNew,FileOpen,FilePrint,FilePrintTo,FileDDE,};
CCommandLineInfo类的成员
构造函数
CCommandLineInfo | 构造一个缺省的CCommandLineInfo对象 |
操作
ParseParam | 可以覆盖这个回调函数以分析命令行参数 |
数据成员
m_bShowSplash | 指明是否显示飞溅型的屏幕 |
m_bRunEmbedded | 指明是否在命令行找到了/Embedding选项 |
m_bRunAutomated | 指明是否在命令行找到了/Automation选项 |
m_nShellCommand | 要执行的命令 |
m_strFileName | 待打开或打印的文件名,在命令为New或DDE时为空 |
m_strPrinterName | 命令为Print To时指明打印机名;否则为空 |
m_strDriverName | 命令为Print To时指明驱动程序名;否则为空 |
m_strPortName | 命令为Print To时指明打印端口名;否则为空 |
示例:
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);