cacertinisetpage.cpp
来自「MiniCA V2.0版本源码。《小型CA系统V2.1含源码》发表以来」· C++ 代码 · 共 726 行 · 第 1/2 页
CPP
726 行
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
SelchangedTree(&m_UserTree, pNMTreeView, &m_UserMap);
*pResult = 0;
}
void CCaCertIniSetPage::OnSelchangedTreeext(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
SelchangedTree(&m_ExtTree, pNMTreeView, &m_ExtMap);
*pResult = 0;
}
void CCaCertIniSetPage::OnKillfocusEdit2() //更新左侧树中名称
{
// TODO: Add your control notification handler code here
CString strDisp;
GetDlgItemText(IDC_EDIT2, strDisp);
strDisp.TrimLeft();
if(!strDisp.IsEmpty())
{
if(m_eTreeType == USERTREE)
m_UserTree.SetItemText(m_hOldItemUser, strDisp);
else
m_ExtTree.SetItemText(m_hOldItemExt, strDisp);
}
}
void CCaCertIniSetPage::OnBSave()
{
// TODO: Add your control notification handler code here
CMap<UINT, UINT, stuINI *, stuINI * > * pMap = NULL;
CMiniMainDlg * pMain = (CMiniMainDlg *)AfxGetMainWnd();
BOOL bInfo = ((CButton *)GetDlgItem(IDC_CAINI_RADIO1))->GetCheck();
CString strIni;
if(bInfo)//保存信息
{
//首先更新当前选中的树项信息,因为如果树项不发生改变,信息不会被更新,这时候需要强制更新
strIni = ((CMiniCaApp *)AfxGetApp())->GetAppPath() + "\\MiniCA.ini";
pMap = &m_UserMap;
UpdateInfo(&m_UserTree, m_UserTree.GetSelectedItem(), pMap);
}
else//保存扩展
{
//首先更新当前选中的树项信息,因为如果树项不发生改变,信息不会被更新,这时候需要强制更新
strIni = ((CMiniCaApp *)AfxGetApp())->GetAppPath() + "\\MiniExt.ini";
pMap = &m_ExtMap;
UpdateInfo(&m_ExtTree, m_ExtTree.GetSelectedItem(), pMap);
}
for(int index = 1; index <= pMap->GetCount(); index++)
{
stuINI * pstuOld = NULL;
if(pMap->Lookup(index-1, pstuOld)) //结构MAP从1开始
{
CString strIndex, strTemp;
strIndex.Format("INFO%d", index);
strTemp.Format("%d", pstuOld->bIsDisp);
WritePrivateProfileString(strIndex, "IsDisp", strTemp, strIni);
WritePrivateProfileString(strIndex, "InsideName", pstuOld->cInsideName, strIni);
WritePrivateProfileString(strIndex, "DispName", pstuOld->cDispName, strIni);
WritePrivateProfileString(strIndex, "Info", pstuOld->cInfo, strIni);
strTemp.Format("%d", pstuOld->IsCheck);
WritePrivateProfileString(strIndex, "IsCheck", strTemp, strIni);
}
}
if(bInfo)//保存信息
{
CCaCertWizardSheet * pWizard = (CCaCertWizardSheet *)(pMain->GetPage("CCaCertWizardSheet"));
if(pWizard)
{
CCaCertInfoPage * pInfoPage = (CCaCertInfoPage *)(pWizard->GetPage("CCaCertInfoPage"));
if(pInfoPage)
pInfoPage->GetIniInfo(strIni);
}
}
else
{
CCaCertWizardSheet * pWizard = (CCaCertWizardSheet *)(pMain->GetPage("CCaCertWizardSheet"));
if(pWizard)
{
CCaCertExtPage * pExtPage = (CCaCertExtPage *)(pWizard->GetPage("CCaCertExtPage"));
if(pExtPage)
pExtPage->GetIniInfo(strIni);
}
}
}
//切换证书信息与证书配置
void CCaCertIniSetPage::OnRadio1() //从EXT -> USER
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_TREEUSER)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_TREEEXT)->ShowWindow(SW_HIDE);
m_eTreeType = USERTREE;
//更新EXT
UpdateInfo(&m_ExtTree, m_ExtTree.GetSelectedItem(), &m_ExtMap);
HTREEITEM hItem = m_UserTree.GetSelectedItem();
if(hItem)
{
DWORD dData = m_UserTree.GetItemData(hItem);
stuINI * pstuOld = NULL;
if(m_UserMap.Lookup(dData, pstuOld)) //结构MAP从1开始
{
SetDlgItemText(IDC_EDIT1, pstuOld->cInsideName);
SetDlgItemText(IDC_EDIT2, pstuOld->cDispName);
SetDlgItemText(IDC_EDIT3, pstuOld->cInfo);
((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->SetCheck(pstuOld->bIsDisp);
((CButton *)GetDlgItem(IDC_CAINI_CHECK2))->SetCheck(pstuOld->IsCheck);
}
}
}
void CCaCertIniSetPage::OnRadio2() //从USER -> EXT
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_TREEUSER)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_TREEEXT)->ShowWindow(SW_SHOW);
m_eTreeType = EXTTREE;
//更新USER
UpdateInfo(&m_UserTree, m_UserTree.GetSelectedItem(), &m_UserMap);
HTREEITEM hItem = m_ExtTree.GetSelectedItem();
if(hItem)
{
DWORD dData = m_ExtTree.GetItemData(hItem);
stuINI * pstuOld = NULL;
if(m_ExtMap.Lookup(dData, pstuOld)) //结构MAP从1开始
{
SetDlgItemText(IDC_EDIT1, pstuOld->cInsideName);
SetDlgItemText(IDC_EDIT2, pstuOld->cDispName);
SetDlgItemText(IDC_EDIT3, pstuOld->cInfo);
((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->SetCheck(pstuOld->bIsDisp);
((CButton *)GetDlgItem(IDC_CAINI_CHECK2))->SetCheck(pstuOld->IsCheck);
}
}
}
void CCaCertIniSetPage::OnBResert()
{
// TODO: Add your control notification handler code here
}
void CCaCertIniSetPage::UpdateInfo(CTreeCtrl * pTree, const HTREEITEM hItem,
CMap<UINT, UINT, stuINI *, stuINI * > * pMap) //信息项发生改变时候,更新MAP
{
if(!pTree || !hItem || !pMap)
return;
DWORD dData = pTree->GetItemData(hItem);
if(dData != -1)
{
CString strInside,
strDisp,
strInfo;
GetDlgItemText(IDC_EDIT1, strInside);
GetDlgItemText(IDC_EDIT2, strDisp);
if(strDisp.IsEmpty())
{
strDisp = pTree->GetItemText(hItem);
}
GetDlgItemText(IDC_EDIT3, strInfo);
BOOL bIsDisp = ((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->GetCheck();
BOOL bIsCheck = ((CButton *)GetDlgItem(IDC_CAINI_CHECK2))->GetCheck();
//删除原来映射
stuINI * pstuOld = NULL;
if(pMap->Lookup(dData, pstuOld))
{
delete [] pstuOld;
}
//增加新映射
stuINI * pstuIni = new stuINI(bIsDisp, strInside.GetBuffer(255),
strDisp.GetBuffer(255), strInfo.GetBuffer(255), bIsCheck);
pMap->SetAt(dData, pstuIni);
//如果映射不合法,则显示图标为非法 显示在列表中,并且有空项为不合法
if(bIsDisp)
{
if(strInside.IsEmpty() || strDisp.IsEmpty() || strInfo.IsEmpty()) //非法
pTree->SetItemImage(hItem, 16, 16);
else
pTree->SetItemImage(hItem, 1, 1);
}
else//显示空白
{
pTree->SetItemImage(hItem, 0, 0);
}
}
}
void CCaCertIniSetPage::OnCheck1() //界面中显示
{
// TODO: Add your control notification handler code here
CTreeCtrl * pCtrl = NULL;
if(m_eTreeType == USERTREE)
{
pCtrl = &m_UserTree;
}
else
{
pCtrl = &m_ExtTree;
}
HTREEITEM hItem = pCtrl->GetSelectedItem();
BOOL bIsDisp = ((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->GetCheck();
if(bIsDisp) //如果显示
{
//判断是否合法,包括,右侧2项内容是否齐全
CString strInside,
strDisp,
strInfo;
GetDlgItemText(IDC_EDIT1, strInside);
GetDlgItemText(IDC_EDIT3, strInfo);
if(strInside.IsEmpty() || strInfo.IsEmpty())
{
pCtrl->SetItemImage(hItem, 16, 16);
}
else
pCtrl->SetItemImage(hItem, 1, 1);
}
else
pCtrl->SetItemImage(hItem, 0, 0);
}
void CCaCertIniSetPage::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult) //用户信息
{
// TODO: Add your control notification handler code here
ClickTree(&m_UserTree);
*pResult = 0;
}
void CCaCertIniSetPage::OnClickTreeext(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
ClickTree(&m_ExtTree);
*pResult = 0;
}
void CCaCertIniSetPage::ClickTree(CTreeCtrl *pTree)
{
CPoint point;
GetCursorPos(&point); // 当前鼠标坐标
CPoint PointInTree = point;
pTree->ScreenToClient( &PointInTree);
UINT nFlag;
HTREEITEM hItem = pTree->HitTest( PointInTree, &nFlag);
if(hItem == NULL)
{
return;
}
pTree->SelectItem(hItem);
if (nFlag&TVHT_ONITEMICON) //点种图标,则选择或不选
{
int nImage,nSelectedImage,nState;
pTree->GetItemImage(hItem,nImage,nSelectedImage);
CString strInside,
strDisp,
strInfo;
GetDlgItemText(IDC_EDIT1, strInside);
GetDlgItemText(IDC_EDIT3, strInfo);
BOOL bInvalid = FALSE;
if(strInside.IsEmpty() || strInfo.IsEmpty()) //非法
bInvalid = TRUE;
if(nImage <3) // 0 -> 1; 1 -> 0
{
if(nImage == 0) //0 -> 1,需要判断//判断是否合法,包括,右侧2项内容是否齐全
{
if(bInvalid) //非法
{
pTree->SetItemImage(hItem, 16, 16);
}
else
{
nState = !nImage;
pTree->SetItemImage(hItem,nState,nState);
//nState 标示选中状态 0-未选择 1-以选择
((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->SetCheck(nState);
}
}
else // 1 -> 0
{
nState = !nImage;
pTree->SetItemImage(hItem,nState,nState);
//nState 标示选中状态 0-未选择 1-以选择
((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->SetCheck(nState);
}
}
else if(nImage == 16) //如果合法,可以变成选中,非法只能变成不选
{
if(bInvalid) //非法
{
pTree->SetItemImage(hItem, 0, 0);
((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->SetCheck(0);
}
else
{
pTree->SetItemImage(hItem, 1, 1);
((CButton *)GetDlgItem(IDC_CAINI_CHECK1))->SetCheck(1);
}
}
}
}
void CCaCertIniSetPage::TranslateCT()
{
SetDlgItemText(IDC_CAINI_RADIO1, MiniCT_10401);
SetDlgItemText(IDC_CAINI_RADIO2, MiniCT_10402);
SetDlgItemText(IDC_CAINI_CHECK1, MiniCT_10403);
SetDlgItemText(IDC_CAINI_CHECK2, MiniCT_10404);
SetDlgItemText(IDC_CAINI_STATIC1, MiniCT_10405);
SetDlgItemText(IDC_CAINI_STATIC2, MiniCT_10406);
SetDlgItemText(IDC_CAINI_STATIC3, MiniCT_10407);
SetDlgItemText(IDC_CAINI_STATIC4, MiniCT_10408);
SetDlgItemText(IDC_B_SAVE, MiniCT_10409);
SetDlgItemText(IDC_B_RESERT, MiniCT_10410);
}
BOOL CCaCertIniSetPage::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
{
// Let the ToolTip process this message.
m_toolTip.RelayEvent(pMsg);
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?