📄 minimaindlg.cpp
字号:
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_SETUP), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//10 - 系统配置
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_CERTYPE), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//11 - 数证类型
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_UP), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//12
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//13 - 主图标
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_CERTINFO), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//14 - 数证信息
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_CERTEXT), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//15 - 数证扩展
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_RUN), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//16
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_CERTMAN), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//17 - 数证管理
DestroyIcon(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON_REG), IMAGE_ICON, 24, 24, 0);
m_ImgList.Add(hIcon);//18 - 系统注册
DestroyIcon(hIcon);
//对于Create创建得窗口,需要用DestroyWindow销毁
m_PageCa.Create(IDD_PROPPAGE_CA,this);
m_PageCertWizardSheet.Create(IDD_PROPPAGE_CASHEET ,this);
m_PageExt.Create(IDD_PROPPAGE_EXT,this);//证书扩展
m_PageWinEvpSheet.Create(IDD_PROPPAGE_EVPSHEET,this);
m_PageWebSheet.Create(IDD_PROPPAGE_WEBSHEET,this);
// m_SslSheet.Create(IDD_PROPPAGE_SSLSHEET,this);
// m_PageRa.Create(IDD_PROPPAGE_RASERVER,this);
m_PageAsn1Parse.Create(IDD_PROPPAGE_ASN1,this);
// m_OcspSheet.Create(IDD_PROPPAGE_OCSPSHEET,this); //leak 908
m_PageCertInfo.Create(IDD_PROPPAGE_CERTINFO,this);
m_PageCertDb.Create(IDD_PROPPAGE_CERTSETUP,this); //leak 1996
m_PageUp.Create(IDD_PROPPAGE_UPDATE,this);
m_PageReg.Create(IDD_PROPPAGE_REG,this);
// m_TreeCtrl.SetBkImage(IDB_BITMAP);
m_TreeCtrl.SetImageList(&m_ImgList,TVSIL_NORMAL);
//添加树信息
m_hPageCaItem = m_TreeCtrl.InsertItem("MiniCA V2.0",0,0);
m_TreeCtrl.SetItemImage(m_hPageCaItem,13,13);
m_TreeCtrl.SetItemData(m_hPageCaItem,(DWORD)&m_PageCa);
m_TreeCtrl.SelectItem(m_hPageCaItem);
m_hPageCertWizardSheetItem = m_TreeCtrl.InsertItem(MiniCT_0000, 0, 0,m_hPageCaItem); //MiniCT 0
m_TreeCtrl.SetItemImage(m_hPageCertWizardSheetItem,1,1);
m_TreeCtrl.SetItemData(m_hPageCertWizardSheetItem,(DWORD)&m_PageCertWizardSheet);
m_hPageExtItem = m_TreeCtrl.InsertItem(MiniCT_0001, 0, 0,m_hPageCaItem); //MiniCT 1
m_TreeCtrl.SetItemImage(m_hPageExtItem,0,0);
m_TreeCtrl.SetItemData(m_hPageExtItem,(DWORD)&m_PageExt);
m_hPageWinEvpSheetItem = m_TreeCtrl.InsertItem(MiniCT_0002, 0, 0,m_hPageCaItem); ////MiniCT 2
m_TreeCtrl.SetItemImage(m_hPageWinEvpSheetItem,4,4);
m_TreeCtrl.SetItemData(m_hPageWinEvpSheetItem,(DWORD)&m_PageWinEvpSheet);
m_hPageWebSheetItem = m_TreeCtrl.InsertItem(MiniCT_0003, 0, 0,m_hPageCaItem); //MiniCT 3
m_TreeCtrl.SetItemImage(m_hPageWebSheetItem,2,2);
m_TreeCtrl.SetItemData(m_hPageWebSheetItem,(DWORD)&m_PageWebSheet);
m_hPageCertInfoItem = m_TreeCtrl.InsertItem("MiniCT_0004", 0, 0,m_hPageCaItem); //MiniCT 4
m_TreeCtrl.SetItemImage(m_hPageCertInfoItem,9,9);
m_TreeCtrl.SetItemData(m_hPageCertInfoItem,(DWORD)&m_PageCertInfo);
m_hPageAsn1ParseItem = m_TreeCtrl.InsertItem(MiniCT_0005, 0, 0,m_hPageCaItem); //MiniCT 5
m_TreeCtrl.SetItemImage(m_hPageAsn1ParseItem,6,6);
m_TreeCtrl.SetItemData(m_hPageAsn1ParseItem,(DWORD)&m_PageAsn1Parse);
m_hPageUpItem = m_TreeCtrl.InsertItem(MiniCT_0006, 0, 0,m_hPageCaItem); ////MiniCT 6
m_TreeCtrl.SetItemImage(m_hPageUpItem,12,12);
m_TreeCtrl.SetItemData(m_hPageUpItem,(DWORD)&m_PageUp);
if(((CMiniCaApp *)AfxGetApp())->IsHpxs() || ((CMiniCaApp *)AfxGetApp())->IsReg())
{
m_hPageCertDbItem = m_TreeCtrl.InsertItem(MiniCT_0007, 0, 0, m_hPageCaItem); ////MiniCT 7
m_TreeCtrl.SetItemImage(m_hPageCertDbItem,10,10);
m_TreeCtrl.SetItemData(m_hPageCertDbItem,(DWORD)&m_PageCertDb);
}
if(((CMiniCaApp *)AfxGetApp())->IsHpxs() || !((CMiniCaApp *)AfxGetApp())->IsReg())
{
m_hPageRegItem = m_TreeCtrl.InsertItem(MiniCT_0008, 0, 0,m_hPageCaItem); //MiniCT 8
m_TreeCtrl.SetItemImage(m_hPageRegItem,18,18);
m_TreeCtrl.SetItemData(m_hPageRegItem,(DWORD)&m_PageReg);
}
m_TreeCtrl.Expand(m_hPageCaItem, TVE_EXPAND );
m_bDlgCreated = true;
m_RegFlag = ((CMiniCaApp *)AfxGetApp())->IsReg();
CRect rcDlgs;
GetDlgItem(IDC_PAGE_AREA)->GetWindowRect(rcDlgs);
ScreenToClient(rcDlgs);
rcDlgs.top += 10;
rcDlgs.bottom -= 5;
rcDlgs.left += 5;
rcDlgs.right -= 5;
m_PageExt.MoveWindow(rcDlgs);
m_PageCa.MoveWindow(rcDlgs);
m_PageCertWizardSheet.MoveWindow(rcDlgs);
m_PageWinEvpSheet.MoveWindow(rcDlgs);
m_PageWebSheet.MoveWindow(rcDlgs);
// m_SslSheet.MoveWindow(rcDlgs);
// m_PageRa.MoveWindow(rcDlgs);
// m_OcspSheet.MoveWindow(rcDlgs);
m_PageAsn1Parse.MoveWindow(rcDlgs);
m_PageCertInfo.MoveWindow(rcDlgs);
// if(::IsWindow(m_PageSetup.m_hWnd))
// m_PageSetup.MoveWindow(rcDlgs);
if(::IsWindow(m_PageCertDb.m_hWnd))
m_PageCertDb.MoveWindow(rcDlgs);
if(::IsWindow(m_PageUp.m_hWnd))
m_PageUp.MoveWindow(rcDlgs);
if(::IsWindow(m_PageReg.m_hWnd))
m_PageReg.MoveWindow(rcDlgs);
m_PageCa.ShowWindow(SW_SHOW);
////////////////////////系统托盘//////////////////////////////////////////////////////
m_nid.cbSize = sizeof( NOTIFYICONDATA );
m_nid.hWnd = m_hWnd;
m_nid.uID = ID_SYSTEMTRAY;
m_nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
m_nid.uCallbackMessage = WM_SYSTEMTRAY;//自定义消息
m_nid.hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME );
// 标题条
m_CaptionBarCtrl.m_textClr = ::GetSysColor(COLOR_3DFACE);
m_CaptionBarCtrl.m_fontWeight = FW_BOLD;
m_CaptionBarCtrl.m_fontSize = 14;
m_CaptionBarCtrl.m_csFontName = "Verdana";
m_CaptionBarCtrl.SetConstantText("MiniCA V2.0");
CString strName = "MiniCA V2.0";
if(!m_RegFlag)//0未注册
strName+= CMiniCaApp::NormalCode("(未注册)");
SetWindowText(strName);
strcpy(m_nid.szTip, strName);
::Shell_NotifyIcon( NIM_ADD,&m_nid);
m_CaptionBarCtrl.SetWindowText(strName);
//列表右键保存文件名
CString lpszFile = ((CMiniCaApp *)AfxGetApp())->GetAppPath() + "\\MiniLog.log";
m_ListBox.SetSaveFile(lpszFile);
//SetWindowLong(this->m_hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
////////////////////////////////////////////////////////////////////////////////////
// m_ListBox.SetBkColor(::GetSysColor(COLOR_BTNFACE));
// m_TreeCtrl.SetBkColor(::GetSysColor(COLOR_BTNFACE));
//得到命令行参数,打开外部传来的文件WinEvp
CString strEvpFile;
strEvpFile.Format("%s", AfxGetApp()->m_lpCmdLine);
//命令行是带""的,需要去掉""
strEvpFile.Replace("\"", " ");
strEvpFile.TrimLeft();
strEvpFile.TrimRight();
CString ext;
ext = strEvpFile.Right(3);
if(ext.CompareNoCase("Evp") == 0)
{
CSafeDataSetPage::EncType encType;
CSafeDataSetPage * pPage = (CSafeDataSetPage * )m_PageWinEvpSheet.GetPage("CSafeDataSetPage");
if(pPage)
{
if(!pPage->ParseEvp(strEvpFile, encType))
{
SendMessage(WM_CLOSE);
}
else
{
GotoPage("WinEvp");
CWinEvpSheet * pEvpSheet = (CWinEvpSheet *)GetPage("CWinEvpSheet");
if(pEvpSheet) //goto datasafeset
{
pEvpSheet->m_PageWinEvpSheet.SetCurSel(1);
}
}
}
}
//关闭splash
CSplashWnd::KillSplashScreen();
Language();
m_wndTaskbarNotifier.Create(this);
m_wndTaskbarNotifier.SetSkin(IDB_SKIN_MSN);
m_wndTaskbarNotifier.SetTextFont("Arial",90,TN_TEXT_NORMAL,TN_TEXT_UNDERLINE);
m_wndTaskbarNotifier.SetTextColor(RGB(0,0,0),RGB(0,0,200));
m_wndTaskbarNotifier.SetTextRect(CRect(10,40,m_wndTaskbarNotifier.m_nSkinWidth-10,
m_wndTaskbarNotifier.m_nSkinHeight-25));
// m_bar.Create(this);
// m_bar.AddPane(22222, 0);
// m_bar.SetPaneInfo(0, 22222, SBPS_NOBORDERS, 300);
// m_bar.GetStatusBarCtrl().SetBkColor(RGB(180,180,180));
// RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,
// 122222);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMiniMainDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if(nID == IDM_SHOWSPLINT)
{
CSplashWnd::EnableSplashScreen(1);
CSplashWnd::ShowSplashScreen(100000, "JPG", "IDR_SPLASHCA", this);
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMiniMainDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMiniMainDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMiniMainDlg::OnSelchangingTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(m_bDlgCreated)
{
HTREEITEM hCurrent = m_TreeCtrl.GetSelectedItem();
if(hCurrent)
{
DWORD dData = m_TreeCtrl.GetItemData(hCurrent);
if(dData!=0)
((CPropertyPage *)dData)->ShowWindow(SW_HIDE);
}
}
*pResult = 0;
}
void CMiniMainDlg::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(m_bDlgCreated)
{
HTREEITEM hCurrent = m_TreeCtrl.GetSelectedItem();
if(hCurrent)
{
DWORD dData = m_TreeCtrl.GetItemData(hCurrent);
if(dData!=0)
{
/* if((DWORD)&m_PageCaWizard == dData)
{
m_PageCaWizard.ViewWizardInfo(); //生成报告
}*/
((CPropertyPage *)dData)->ShowWindow(SW_SHOW);
// ((CPropertyPage *)dData)->SetActiveWindow();
CString strName = m_TreeCtrl.GetItemText(hCurrent);
if(/*hCurrent == m_hPageWinEvpSheetItem ||*/ hCurrent == m_hPageAsn1ParseItem || hCurrent == m_hPageCertInfoItem)
{
DragAcceptFiles(TRUE);
}
else
DragAcceptFiles(FALSE);
if(strName.Find("MiniCA")== -1)
strName = "MiniCA "+strName;
if(!m_RegFlag)//0未注册
strName+= CMiniCaApp::NormalCode("(未注册)");
int nImage = 0,
nSelectedImage = 0;
m_TreeCtrl.GetItemImage(hCurrent,nImage,nSelectedImage);
DestroyIcon(m_hIconSelect);
m_hIconSelect = m_ImgList.ExtractIcon(nImage);
// SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
SetIcon(m_hIconSelect, FALSE); // Set small icon
SetWindowText(strName);
m_CaptionBarCtrl.SetWindowText(strName);
SetupShell(strName,m_hIconSelect);
}
}
}
*pResult = 0;
}
void CMiniMainDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
m_PageCa.DestroyWindow();
m_PageCertWizardSheet.DestroyWindow();
m_PageExt.DestroyWindow();
m_PageWinEvpSheet.DestroyWindow();
m_PageWebSheet.DestroyWindow();
// m_SslSheet.DestroyWindow();
// m_PageRa.DestroyWindow();
// m_OcspSheet.DestroyWindow();
m_PageAsn1Parse.DestroyWindow();
m_PageCertInfo.DestroyWindow();
m_PageReg.DestroyWindow();
m_PageCertDb.DestroyWindow();
m_PageUp.DestroyWindow();
::Shell_NotifyIcon( NIM_DELETE,&m_nid );
//删除XP风格界面库的全局钩子
//ClassXP(NULL, FALSE);
}
LRESULT CMiniMainDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch(message)
{
case WM_SYSTEMTRAY: //自定义消息
if(lParam==WM_LBUTTONDOWN)
{
// AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
AfxGetApp()->m_pMainWnd->ShowWindow(SW_RESTORE);
AfxGetApp()->m_pMainWnd->SetForegroundWindow();
m_bHide = FALSE;
break;
}
else if(lParam==WM_RBUTTONDOWN)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -