// NetOption.cpp : 实现文件 // #include "stdafx.h" #include "net_tools.h" #include "NetOption.h" #include ".\netoption.h" // CNetOption 对话框 IMPLEMENT_DYNAMIC(CNetOption, CDialog) CNetOption::CNetOption(CWnd* pParent /*=NULL*/) : CDialog(CNetOption::IDD, pParent) , m_smtpPort(25) , m_pop3Port(110) { } CNetOption::~CNetOption() { } void CNetOption::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_SMTP_ADDR, m_smtpAddr); DDX_Text(pDX, IDC_SMTP_PORT, m_smtpPort); DDX_Text(pDX, IDC_POP3_ADDR, m_pop3Addr); DDX_Text(pDX, IDC_POP3_PORT, m_pop3Port); DDX_Text(pDX, IDC_USER_ACCOUNT, m_userAccount); DDX_Text(pDX, IDC_USER_PASSWD, m_userPasswd); DDX_Text(pDX, IDC_RECIPIENTS, m_recipients); } BOOL CNetOption::OnInitDialog() { if (m_smtpAddr.IsEmpty()) GetDlgItem(IDC_STATIC_SMTP_ADDR)->SetWindowText("X"); else GetDlgItem(IDC_STATIC_SMTP_ADDR)->SetWindowText("√"); if (m_pop3Addr.IsEmpty()) GetDlgItem(IDC_STATIC_POP3_ADDR)->SetWindowText("X"); else GetDlgItem(IDC_STATIC_POP3_ADDR)->SetWindowText("√"); if (m_userAccount.IsEmpty()) GetDlgItem(IDC_STATIC_USER)->SetWindowText("X"); else GetDlgItem(IDC_STATIC_USER)->SetWindowText("√"); if (m_userPasswd.IsEmpty()) GetDlgItem(IDC_STATIC_PASS)->SetWindowText("X"); else GetDlgItem(IDC_STATIC_PASS)->SetWindowText("√"); if (m_recipients.IsEmpty()) GetDlgItem(IDC_STATIC_RECIPIENTS)->SetWindowText("X"); else GetDlgItem(IDC_STATIC_RECIPIENTS)->SetWindowText("√"); if (m_smtpAddr.IsEmpty()) GetDlgItem(IDC_SMTP_ADDR)->SetFocus(); else if (m_pop3Addr.IsEmpty()) GetDlgItem(IDC_POP3_ADDR)->SetFocus(); else if (m_userAccount.IsEmpty()) GetDlgItem(IDC_USER_ACCOUNT)->SetFocus(); else if (m_userPasswd.IsEmpty()) GetDlgItem(IDC_USER_PASSWD)->SetFocus(); else if (m_recipients.IsEmpty()) GetDlgItem(IDC_RECIPIENTS)->SetFocus(); return FALSE; } BEGIN_MESSAGE_MAP(CNetOption, CDialog) ON_WM_PAINT() ON_WM_CREATE() ON_EN_KILLFOCUS(IDC_USER_ACCOUNT, OnEnKillfocusUserAccount) ON_EN_KILLFOCUS(IDC_SMTP_ADDR, OnEnKillfocusSmtpAddr) ON_EN_KILLFOCUS(IDC_POP3_ADDR, OnEnKillfocusPop3Addr) ON_EN_KILLFOCUS(IDC_USER_PASSWD, OnEnKillfocusUserPasswd) ON_EN_KILLFOCUS(IDC_RECIPIENTS, OnEnKillfocusRecipients) ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel) ON_BN_CLICKED(IDOK, OnBnClickedOk) END_MESSAGE_MAP() CNetOption& CNetOption::SetSmtpAddr(const char* addr, int port) { m_smtpAddr = addr; m_smtpPort = port; return *this; } CNetOption& CNetOption::SetPop3Addr(const char* addr, int port) { m_pop3Addr = addr; m_pop3Port = port; return *this; } CNetOption& CNetOption::SetUserAccount(const char* s) { m_userAccount = s; return *this; } CNetOption& CNetOption::SetUserPasswd(const char* s) { m_userPasswd = s; return *this; } CNetOption& CNetOption::SetRecipients(const char* s) { if (s == NULL || *s == 0) return *this; ACL_ARGV* tokens = acl_argv_split(s, ",;,; \t\r\n"); ACL_ITER iter; acl::string buf; acl_foreach(iter, tokens) { if (iter.i > 0) buf << ";\r\n"; buf << (char*) iter.data; } acl_argv_free(tokens); m_recipients = buf.c_str(); return *this; } void CNetOption::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CDialog::OnPaint() UpdateData(FALSE); } int CNetOption::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 return 0; } void CNetOption::OnEnKillfocusSmtpAddr() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); if (m_smtpAddr.IsEmpty()) { GetDlgItem(IDC_STATIC_SMTP_ADDR)->SetWindowText("X"); GetDlgItem(IDC_SMTP_ADDR)->SetFocus(); } else GetDlgItem(IDC_STATIC_SMTP_ADDR)->SetWindowText("√"); } void CNetOption::OnEnKillfocusPop3Addr() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); if (m_pop3Addr.IsEmpty()) { GetDlgItem(IDC_STATIC_POP3_ADDR)->SetWindowText("X"); GetDlgItem(IDC_POP3_ADDR)->SetFocus(); } else GetDlgItem(IDC_STATIC_POP3_ADDR)->SetWindowText("√"); } void CNetOption::OnEnKillfocusUserAccount() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); if (m_userAccount.IsEmpty()) { GetDlgItem(IDC_STATIC_USER)->SetWindowText("X"); GetDlgItem(IDC_USER_ACCOUNT)->SetFocus(); } else GetDlgItem(IDC_STATIC_USER)->SetWindowText("√"); } void CNetOption::OnEnKillfocusUserPasswd() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); if (m_userPasswd.IsEmpty()) { GetDlgItem(IDC_STATIC_PASS)->SetWindowText("X"); GetDlgItem(IDC_USER_PASSWD)->SetFocus(); } else GetDlgItem(IDC_STATIC_PASS)->SetWindowText("√"); } void CNetOption::OnEnKillfocusRecipients() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); if (m_userAccount.IsEmpty()) { GetDlgItem(IDC_STATIC_USER)->SetWindowText("X"); GetDlgItem(IDC_RECIPIENTS)->SetFocus(); } else GetDlgItem(IDC_STATIC_USER)->SetWindowText("√"); } void CNetOption::OnBnClickedCancel() { // TODO: 在此添加控件通知处理程序代码 OnCancel(); } void CNetOption::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 OnOK(); }