z4none
11/1/2017 - 6:11 AM

MFC parse command line

//
class CMyCommandLineInfo : public CCommandLineInfo
{
public:
	//
	bool  m_debug;
	DWORD m_handle;

	//
	CMyCommandLineInfo()
	{
		m_debug = false;
		m_handle = 0;
	}

	//
	void ParseParam(const TCHAR * pszParam, BOOL bFlag, BOOL bLast)
	{
		bool bHandled = false;
		TCHAR * lpszParse = (TCHAR *)pszParam;
		if (bFlag)
		{
			switch (*lpszParse)
			{
			case _T('d'):
			case _T('D'): m_debug = bHandled = true; break;
			case _T('h'):
			case _T('H'):
				++lpszParse;
				if (*lpszParse == _T('='))
					++lpszParse;
				m_handle = _tcstol(lpszParse, NULL, 16);
				bHandled = true;
				break;
			}
		}
		
		if (!bHandled)
			CCommandLineInfo::ParseParam(pszParam, bFlag, bLast);
	}
};

//
CMyCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

if (cmdInfo.m_handle == 0) {
	printf("invalid window handle\n");
	return FALSE;
}