下面的例子可以用来判断程序运行的时候是否使用了-c,-s或者-p选项,具体程序中大家可以按照例子做简单改动即可。
第一步:从CCommandLineInfo重载一个类CWzdCommandLineInfo,实现方式如下
#if !definedWZDCOMMANDLINEINFO_H
#define WZDCOMMANDLINEINFO_H
// WzdCommandLineInfo.h : header file
//
// CWzdCommandLineInfo window
classCWzdCommandLineInfo :publicCCommandLineInfo
{
// Construction
public :
CWzdCommandLineInfo( ) ;
// Attributes
public:
BOOLm_bCFlag;
BOOLm_bSFlag;
BOOLm_bPFlag;
CStringm_sArg;
// Operations
public:
voidParseParam(constTCHAR*pszParam,BOOLbFlag,BOOLbLast);
// Overrides
// Implementation
public:
virtual ~CWzdCommandLineInfo();
} ;
//
#endif
头文件结束,下面是CPP文件
// WzdCommandLineInfo.cpp : implementation file
//
#include "stdafx.h"
#include "WzdCommandLineInfo.h"
#ifdef _DEBUG
#define newDEBUG_NEW
#undef THIS_FILE
staticcharTHIS_FILE[] =__FILE__;
#endif
//
// CWzdCommandLineInfo
CWzdCommandLineInfo::CWzdCommandLineInfo( )
{
m_bCFlag =FALSE ;
m_bSFlag =FALSE ;
m_bPFlag =FALSE;
m_sArg =_T(" ") ;
}
CWzdCommandLineInfo::~CWzdCommandLineInfo( )
{
}
//
voidCWzdCommandLineInfo::ParseParam(constTCHAR*pszParam, BOOLbFlag,
BOOLbLast)
{
CStringsArg(pszParam);
if (bFlag)
{
m_bCFlag = !sArg.CompareNoCase("c");
m_bSFlag = !sArg.CompareNoCase("s");
m_bPFlag = !sArg.CompareNoCase("p");
}
// m_strFileName gets the first nonflag name
elseif (m_strFileName.IsEmpty())
{
m_sArg =sArg ;
}
CCommandLineInfo::ParseParam(pszParam,bFlag, bLast ) ;
}
第二步:在APP类中添加成员变量:
public:
CWzdCommandLineInfom_cmdInfo;
第三步:在InitInstance()函数中修改如下代码
// Parse command line for standard shell commands, DDE, file open
ParseCommandLine(m_cmdInfo);
// Dispatch commands specified on the command line
if (!ProcessShellCommand(m_cmdInfo))
returnFALSE;
如此即可以在程序的其它地方通过AfxGetApp()->m_cmdInfo取得 CWzdCommandLineInfo对象,然后通过判断起成员变量m_bCFlag等等就能知道是用哪个选项运行的了。注意:参数必须以 横线开头