// DLG_Corp_Extension.cpp: 实现文件 // #include "stdafx.h" #include "SmsManager.h" #include "afxdialogex.h" #include "DLG_Corp_Extension.h" // DLG_Corp_Extension 对话框 IMPLEMENT_DYNAMIC(DLG_Corp_Extension, CDialogEx) DLG_Corp_Extension::DLG_Corp_Extension(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_CORP_EXTENSION, pParent) , m_strCorpName(_T("")) , m_strDuration(_T("")) , m_strExpiry(_T("")) , m_S1(_T("")) , m_strYWY(_T("")) , m_tNewExpiry(COleDateTime::GetCurrentTime()) , m_strBZ(_T("")) , m_strCorpID(_T("")) { m_tOvrTime = { 0 }; m_tNewOvrTime = { 0 }; m_lType=0; m_lCorpID = 0; } DLG_Corp_Extension::~DLG_Corp_Extension() { } void DLG_Corp_Extension::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_CORP_EXTENSION_CORPNAME, m_strCorpName); DDX_CBString(pDX, IDC_CORP_EXTENSION_DURATION, m_strDuration); DDX_Text(pDX, IDC_CORP_EXTENSION_EXPRIY, m_strExpiry); DDX_Text(pDX, IDC_CORP_EXTENSION_S1, m_S1); DDX_Text(pDX, IDC_CORP_EXTENSION_YWY, m_strYWY); DDX_DateTimeCtrl(pDX, IDC_CORP_EXTENSION_NEWEXPIRY, m_tNewExpiry); DDX_Control(pDX, IDC_CORP_EXTENSION_DURATION, m_L_Duration); DDX_Text(pDX, IDC_CORP_HSSMS_BZ, m_strBZ); DDV_MaxChars(pDX, m_strBZ, 160); DDX_Text(pDX, IDC_CORP_EXTENSION_CORPID, m_strCorpID); } BEGIN_MESSAGE_MAP(DLG_Corp_Extension, CDialogEx) ON_BN_CLICKED(IDOK, &DLG_Corp_Extension::OnBnClickedOk) ON_CBN_SELCHANGE(IDC_CORP_EXTENSION_DURATION, &DLG_Corp_Extension::OnSelchangeCorpExtensionDuration) END_MESSAGE_MAP() // DLG_Corp_Extension 消息处理程序 void DLG_Corp_Extension::SetData(long lCorpID,CString strCorpName, CString strYWYName, SYSTEMTIME tOvrTime, long lType) { m_lCorpID = lCorpID; m_strCorpName2 = strCorpName; m_strYWYName2 = strYWYName; m_tOvrTime = tOvrTime; m_lType = lType; } BOOL DLG_Corp_Extension::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 m_strCorpID.Format(_T("%d"), m_lCorpID); m_strCorpName = m_strCorpName2; m_strYWY = m_strYWYName2; m_strExpiry.Format(_T("%04d.%02d.%02d"), m_tOvrTime.wYear, m_tOvrTime.wMonth, m_tOvrTime.wDay); if (m_lType == 1) { m_S1 = _T("代理商延期"); GetDlgItem(IDC_CORP_EXTENSION_CORPID_S)->SetWindowText(_T("代理商ID")); } UpdateData(false); m_L_Duration.SetCurSel(0); OnSelchangeCorpExtensionDuration(); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } SYSTEMTIME DLG_Corp_Extension::GetData() { return SYSTEMTIME(m_tNewOvrTime); } void DLG_Corp_Extension::OnBnClickedOk() { if (!UpdateData(true)) return; m_tNewExpiry.SetDateTime(m_tNewExpiry.GetYear(), m_tNewExpiry.GetMonth(), m_tNewExpiry.GetDay(),23, 59, 59); if (m_tNewExpiry < COleDateTime::GetCurrentTime()) { MessageBox(_T("延期后新过期时间不能小于当前日期!"), _T("错误"), MB_ICONWARNING); return; } if (m_tNewExpiry > COleDateTime::GetCurrentTime() + COleDateTimeSpan(366)) { MessageBox(_T("延期后新过期时间不能超过1年!"), _T("错误"), MB_ICONWARNING); return; } m_tNewExpiry.GetAsSystemTime(m_tNewOvrTime); if (m_strBZ.GetLength() < 4) { MessageBox(_T("请录入延期原因!"), _T("错误"), MB_ICONWARNING); GetDlgItem(IDC_CORP_HSSMS_BZ)->SetFocus(); return; } CDialogEx::OnOK(); } void DLG_Corp_Extension::OnSelchangeCorpExtensionDuration() { //计算延期时间 long lDuration = m_L_Duration.GetCurSel(); UpdateData(true); //1星期;1个月;2个月;3个月;6个月;1年;其它日期; SYSTEMTIME tNow = { 0 }; tNow = m_tOvrTime; if (COleDateTime(tNow).GetStatus() == COleDateTime::invalid) { GetLocalTime(&tNow); } COleDateTime tNewExpiry=COleDateTime(tNow); WORD wMon = 0; BOOL bEnable = false; switch(lDuration) { case 0: //1星期 default: tNewExpiry = tNewExpiry + COleDateTimeSpan(7, 0, 0, 0); break; case 1: //1月 case 2: //2月 case 3: //3月 case 4: //6月 if (lDuration == 4) wMon = 6; else wMon = lDuration; tNow.wYear = tNow.wYear + (tNow.wMonth + wMon) / 12; tNow.wMonth = (tNow.wMonth + wMon) % 12; tNewExpiry = COleDateTime(tNow); break; case 5: //1年 tNow.wYear = tNow.wYear + 1; tNewExpiry = COleDateTime(tNow); break; case 6: //其它日期 tNewExpiry = tNewExpiry + COleDateTimeSpan(7, 0, 0, 0); bEnable = true; break; } m_tNewExpiry = tNewExpiry; tNewExpiry.SetTime(23, 59, 59); GetDlgItem(IDC_CORP_EXTENSION_NEWEXPIRY)->EnableWindow(bEnable); UpdateData(false); }