// CrSigDlg.cpp : implementation file // #include "stdafx.h" #include "cldsig32.h" #include "CrSigDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define TRIM(s) \ s.TrimLeft(); \ s.TrimRight() ///////////////////////////////////////////////////////////////////////////// // CCreateSignatureDlg dialog CCreateSignatureDlg::CCreateSignatureDlg(CWnd* pParent /*=NULL*/) : CDialog(CCreateSignatureDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCreateSignatureDlg) m_sPrivateKey = _T(""); m_sDigitalCertificate = _T(""); m_sPassword = _T(""); m_sSignedDataSet = _T(""); //}}AFX_DATA_INIT } void CCreateSignatureDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCreateSignatureDlg) DDX_Text(pDX, IDC_EDIT_PRIVATEKEY, m_sPrivateKey); DDX_Text(pDX, IDC_EDIT_DIGITALCERTIFICATE, m_sDigitalCertificate); DDX_Text(pDX, IDC_EDIT_PASSWORD, m_sPassword); DDX_Text(pDX, IDC_EDIT_SIGNEDDATASET, m_sSignedDataSet); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCreateSignatureDlg, CDialog) //{{AFX_MSG_MAP(CCreateSignatureDlg) ON_EN_CHANGE(IDC_EDIT_PRIVATEKEY, OnChangeEditPrivateKey) ON_EN_CHANGE(IDC_EDIT_DIGITALCERTIFICATE, OnChangeEditDigitalCertificate) ON_EN_CHANGE(IDC_EDIT_SIGNEDDATASET, OnChangeEditSignedDataSet) ON_BN_CLICKED(IDC_BUTTON_BROWSE_PRIVATEKEY, OnButtonBrowsePrivateKey) ON_BN_CLICKED(IDC_BUTTON_BROWSE_DIGITALCERTIFICATE, OnButtonBrowseDigitalCertificate) ON_BN_CLICKED(IDC_BUTTON_BROWSE_SIGNEDDATASET, OnButtonBrowseSignedDataSet) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CCreateSignatureDlg::UpdateOkButtonState() { CString sPrivateKey, sDigitalCertificate, sSignedDataSet; GetDlgItemText(IDC_EDIT_PRIVATEKEY, sPrivateKey); GetDlgItemText(IDC_EDIT_DIGITALCERTIFICATE, sDigitalCertificate); GetDlgItemText(IDC_EDIT_SIGNEDDATASET, sSignedDataSet); TRIM(sPrivateKey); TRIM(sDigitalCertificate); TRIM(sSignedDataSet); GetDlgItem(IDOK)->EnableWindow(sPrivateKey.GetLength() && sDigitalCertificate.GetLength() && sSignedDataSet.GetLength()); } ///////////////////////////////////////////////////////////////////////////// // CCreateSignatureDlg message handlers BOOL CCreateSignatureDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateOkButtonState(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CCreateSignatureDlg::OnButtonBrowsePrivateKey() { CFileDialog FileDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, "All Files (*.*)|*.*||", this); if (FileDlg.DoModal() != IDOK) { return; } SetDlgItemText(IDC_EDIT_PRIVATEKEY, FileDlg.GetPathName()); } void CCreateSignatureDlg::OnButtonBrowseDigitalCertificate() { LPTSTR pszFilter; pszFilter = "Digital Certificates (*.pem; *.cer; *.crt; *.p7b; *.spc; *.pfx; *.p12)|" "*.pem; *.cer; *.crt; *.p7b; *.spc; *.pfx; *.p12|" "All Files (*.*)|*.*||"; CFileDialog FileDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, pszFilter, this); if (FileDlg.DoModal() != IDOK) { return; } SetDlgItemText(IDC_EDIT_DIGITALCERTIFICATE, FileDlg.GetPathName()); } void CCreateSignatureDlg::OnButtonBrowseSignedDataSet() { CFileDialog FileDlg(FALSE, "dic", NULL, OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, "DICOM Files (*.dic; *.dcm)|*.dic; *.dcm|All Files (*.*)|*.*||", this); if (FileDlg.DoModal() != IDOK) { return; } SetDlgItemText(IDC_EDIT_SIGNEDDATASET, FileDlg.GetPathName()); } void CCreateSignatureDlg::OnOK() { CDialog::OnOK(); TRIM(m_sPrivateKey); TRIM(m_sDigitalCertificate); TRIM(m_sSignedDataSet); } void CCreateSignatureDlg::OnChangeEditPrivateKey() { UpdateOkButtonState(); } void CCreateSignatureDlg::OnChangeEditDigitalCertificate() { UpdateOkButtonState(); } void CCreateSignatureDlg::OnChangeEditSignedDataSet() { UpdateOkButtonState(); }