📄 cisocaview.cpp
字号:
// CisoCAView.cpp : implementation of the CCisoCAView class
//
#include "stdafx.h"
#include "CisoCA.h"
#include "CisoCADoc.h"
#include "CisoCAView.h"
#include "getpwd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CInfoReport InfoReport;
extern DWORD dwMoudleID;
/////////////////////////////////////////////////////////////////////////////
// CCisoCAView
IMPLEMENT_DYNCREATE(CCisoCAView, CListView)
BEGIN_MESSAGE_MAP(CCisoCAView, CListView)
//{{AFX_MSG_MAP(CCisoCAView)
ON_WM_CREATE()
ON_WM_SHOWWINDOW()
ON_COMMAND(ID_CA_REVOKE, OnCaRevoke)
ON_COMMAND(ID_CA_HELP, OnCaHelp)
ON_COMMAND(ID_HELP_SITE, OnHelpSite)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCisoCAView construction/destruction
CCisoCAView::CCisoCAView()
{
// TODO: add construction code here
}
CCisoCAView::~CCisoCAView()
{
}
BOOL CCisoCAView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style |= LVS_REPORT;
//cs.dwExStyle |=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
return CListView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CCisoCAView drawing
void CCisoCAView::OnDraw(CDC* pDC)
{
CCisoCADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CCisoCAView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: You may populate your ListView with items by directly accessing
// its list control through a call to GetListCtrl().
}
/////////////////////////////////////////////////////////////////////////////
// CCisoCAView diagnostics
#ifdef _DEBUG
void CCisoCAView::AssertValid() const
{
CListView::AssertValid();
}
void CCisoCAView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
CCisoCADoc* CCisoCAView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCisoCADoc)));
return (CCisoCADoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CCisoCAView message handlers
void CCisoCAView::OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct)
{
//TODO: add code to react to the user changing the view style of your window
}
int CCisoCAView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
DWORD dwStyle = SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES|LVS_EX_INFOTIP ;
SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);
return 0;
}
void CCisoCAView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
// TODO: Add your specialized code here and/or call the base class
CCisoCADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//
CListCtrl *lc = &GetListCtrl();
lc->SetBkColor(RGB(254,252,237));
lc->SetTextBkColor(RGB(254,252,237));
lc->SetTextColor(RGB(41,57,201));
lc->DeleteAllItems();
pDoc->SelectDB(WANT_TO_SHOW_VALID_CERT,lc);
}
void CCisoCAView::OnShowWindow(BOOL bShow, UINT nStatus)
{
CListView::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
CCisoCADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CListCtrl *lc = &GetListCtrl();
//lc->DeleteAllItems();
LV_COLUMN lvCol;
lvCol.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
// 加入表头信息
for (int i = 0; i < pDoc->m_ColHeader.m_ColumnCount; ++i)
{
lvCol.iSubItem = i;
lvCol.pszText = (char*)(LPCTSTR)pDoc->m_ColHeader.m_strColumnName[i];
lvCol.cx = pDoc->m_ColHeader.m_ColumnSize[i];
lvCol.fmt = LVCFMT_LEFT;
lc->InsertColumn(i, &lvCol);
}
}
void CCisoCAView::OnCaRevoke()
{
// TODO: Add your command handler code here
InfoReport.WriteInfo(dwMoudleID,"点击吊销证书按钮!");
CCisoCADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(pDoc->isInit == FALSE)
{
AfxMessageBox("CA未初始化!");
InfoReport.WriteInfo(dwMoudleID,"系统提示 - CA未初始化!");
return ;
}
// 如果没有读入CA证书与私钥,则读入
if(!pDoc->m_CaCore.HasValidCA())
{
CGetPwd gpDlg;
gpDlg.strTip="请输入CA私钥的密码:";
if(gpDlg.DoModal() != IDOK ) return;
int ret= -1;
ret = pDoc->m_CaCore.GetCertificate(CA_CERTIFICATE,PEM,TRUE);
if(ret != CA_OK)
{
char buf[256]={0};
pDoc->m_CaCore.GetErrString(buf);
AfxMessageBox(buf);
return ;
}
ret = pDoc->m_CaCore.GetPrivateKey(CA_PRIVATE_KEY,gpDlg.m_pwd,PEM,TRUE);
if(ret != CA_OK)
{
char buf[256]={0};
pDoc->m_CaCore.GetErrString(buf);
AfxMessageBox(buf);
return ;
}
}
CStringList list;
CListCtrl *lc = &GetListCtrl();
int count = lc->GetSelectedCount();
// 边界判断
if(count <= 0 )
{
::MessageBox(NULL,"没有选中证书!","系统提示",MB_OK|MB_ICONINFORMATION);
return;
}
//
POSITION pos = lc->GetFirstSelectedItemPosition();
for(int ii=0;ii<count;ii++)
{
try
{
int item = lc->GetNextSelectedItem(pos);
CString str = lc->GetItemText(item,0);
list.AddTail(str);
}
catch(CMemoryException e)
{}
}
// 2004/03/25 张荣华 加入对吊销根证书的提示
for( int i=0; i < list.GetCount(); i++ )
{
int ret ;
CString strSN = list.GetAt(list.FindIndex(i));
if(strSN.CompareNoCase("0") == 0)
{
ret = ::MessageBox(NULL,"你正对根证书进行吊销! \n这可能使所有的证书失效!! \n确定要吊销吗???? ",
"系统警告",MB_OKCANCEL|MB_ICONSTOP);
if(ret != IDOK)return;
}
}
// 更新数据库、系统显示
pDoc->UpdateCertState(&list);
pDoc->UpdateAllViews(0);
}
void CCisoCAView::OnCaHelp()
{
// TODO: Add your command handler code here
HINSTANCE hinstance;
CString str="http://www.infosecurity.org.cn/forum/forum.html";
//hinstance=ShellExecute(GetSafeHwnd(),_T("open"),str,NULL,NULL,SW_SHOWNORMAL);
hinstance=ShellExecute(NULL,_T("open"),str,NULL,NULL,SW_SHOWNORMAL);
}
void CCisoCAView::OnHelpSite()
{
// TODO: Add your command handler code here
HINSTANCE hinstance;
CString str="http://www.infosecurity.org.cn";
hinstance=ShellExecute(GetSafeHwnd(),_T("open"),str,NULL,NULL,SW_SHOWNORMAL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -