用map是您的程序更清晰!

   當您遇到一大堆用數字串對應的規則時,記這些字符串有時會讓人很頭痛。沒關係,用 枚舉+map。

1.定義一些枚舉。

enum UpdateKind
{
	enCommenFile = 1, 
	enCom,          //
	enDelCommenFile,//
	enDelCom,       //
	enRegTable,     //
	enShortCut,     //
	enModifySec,    // 
	enDelSec,       // 
	enActiveX,      // 
};

2.定義一個map的成員變量和枚舉的成員變量,來映射數字串和枚舉的關係

	map<CString,UpdateKind> m_mapKind;
        UpdateKind m_enSrvType;

 
3.同時有個接口給人設置類型。

void CAutoCommand::Set_SrvType(const CString &strType)
{
	m_enSrvType = m_mapKind[strType];
};

4.構造函數中來個初始化吧

 CAutoCommand::CAutoCommand()
 {
	 m_mapKind.insert(make_pair(_T("0100"),enCommenFile));
	 m_mapKind.insert(make_pair(_T("0200"),enCom));
	 m_mapKind.insert(make_pair(_T("0300"),enDelCommenFile));
	 m_mapKind.insert(make_pair(_T("0400"),enDelCom));
	 m_mapKind.insert(make_pair(_T("0500"),enRegTable));
	 m_mapKind.insert(make_pair(_T("0600"),enShortCut));
	 m_mapKind.insert(make_pair(_T("0702"),enModifySec));
	 m_mapKind.insert(make_pair(_T("0703"),enDelSec));
	 m_mapKind.insert(make_pair(_T("0800"),enActiveX));
 };

5.別人設置了類型。

pUpdateCmd->Set_SrvType(sectioninfoSrv.strType);

6.該是你自己表現的時候了

	UpdateResult CAutoCommand::UpdateFile()
{
	UpdateResult updateRtn = enFailure;
	switch(m_enSrvType)
	{
	case enCommenFile:   // 
		updateRtn=commen();
		break;
	case enCom:       // 
		updateRtn=com();
		break;
	case enDelCommenFile:// 
		updateRtn=delCommen();
		break;
	case enDelCom:       // 
		updateRtn=delCom();
		break;
	case enRegTable:     // 
		updateRtn=regedit();
		break;
	case enShortCut:     // 
		updateRtn=shortcut();		
		break;
	case enModifySec:    //
		updateRtn=modifyIni();
		break;
	case enDelSec:       //
		updateRtn=deleteIni();
		break;
	case enActiveX:      //
		updateRtn=myIE();
		break;
	default:
		break;
	}
	return updateRtn;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章