⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minimaindlg.cpp

📁 MiniCA V2.0版本源码。《小型CA系统V2.1含源码》发表以来
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	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 + -