Derive a class from
CCommandLineInfo
and add your implementation of the virtual member function
ParseParam()
to process your application specific parameters. The derived class should contain member variables to store your parameters.
Process the command line in InitInstance() of your application using your command line info class:
BOOL CMyApp::InitInstance()
{
CMyCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if (!ProcessShellCommand(cmdInfo))
return FALSE;
return TRUE;
}
UPDATE: A
very simple
CCommandLineInfo
derived class.
class CMyCmdLineInfo : public CCommandLineInfo
{
public:
CMyCmdLineInfo(void);
virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);
bool m_bBoolParam;
bool m_bHelp;
CString m_strFileParam;
};
CMyCmdLineInfo::CMyCmdLineInfo()
{
m_bBoolParam = m_bHelpParam = false;
}
void CMyCmdLineInfo::ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast)
{
bool bHandled = false;
TCHAR lpszParse = pszParam;
if (bFlag)
{
switch (*lpszParse)
{
case _T('b') :
case _T('B') : m_bBoolParam = bHandled = true; break;
case _T('h') :
case _T('H') :
case _T('?') : m_bHelp = bHandled = true; break;
case _T('f') :
++lpszParse;
if (*lpszParse == _T('='))
++lpszParse;
m_strFileParam = lpszParse;
bHandled = true;
break;
}
}
if (!bHandled)
CCommandLineInfo::ParseParam(pszParam, bFlag, bLast);
}