當您遇到一大堆用數字串對應的規則時,記這些字符串有時會讓人很頭痛。沒關係,用 枚舉+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;
}