123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894 |
- // lyfzSMSAppDlg.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "lyfzSMSApp.h"
- #include "lyfzSMSAppDlg.h"
- #include "DataManager.h"
- #include "PhoneNumImport.h"
- #include "AddContacts.h"
- #include "DataManager.h"
- #include "SendMsgLogDlg.h"
- #include "ExcelForODBC.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- #if USE_TRAYICON
- #define WM_MY_TRAY_NOTIFICATION WM_USER + 108
- const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("lyfzSMSApp"));
- #endif
- // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
- class CAboutDlg : public CDialog
- {
- public:
- CAboutDlg();
- // 对话框数据
- enum { IDD = IDD_ABOUTBOX };
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
- // 实现
- protected:
- DECLARE_MESSAGE_MAP()
- };
- CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
- {
- }
- void CAboutDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- }
- BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
- END_MESSAGE_MAP()
- // ClyfzSMSAppDlg 对话框
- #if USE_TRAYICON
- ClyfzSMSAppDlg::ClyfzSMSAppDlg(CWnd* pParent /*=NULL*/)
- : CDialog(ClyfzSMSAppDlg::IDD, pParent), m_trayIcon(IDR_MAINFRAME)
- , m_nCountNum(0)
- , m_strPhoneNums(_T(""))
- , m_strAccount(_T(""))
- , m_strPassWord(_T(""))
- , m_strContent(_T(""))
- , m_strTextCount(_T(""))
- #else
- ClyfzSMSAppDlg::ClyfzSMSAppDlg(CWnd* pParent /*=NULL*/)
- : CDialog(ClyfzSMSAppDlg::IDD, pParent)
- , m_nCountNum(0)
- , m_strPhoneNums(_T(""))
- , m_strAccount(_T(""))
- , m_strPassWord(_T(""))
- , m_strContent(_T(""))
- , m_strTextCount(_T(""))
- #endif
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- m_bAutoRuning = AfxGetApp()->GetProfileInt(_T("lyfzSMSApp"), _T("Autoruning"), 0);
- #if USE_TRAYICON
- m_isNotify = TRUE;
- m_bNoticeTray = TRUE;
- #endif
- }
- void ClyfzSMSAppDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Text(pDX, IDC_PHONECOUNT, m_nCountNum);
- DDX_Control(pDX, IDC_PHONENUMBERS, m_NumEditCtrl);
- DDX_Control(pDX, IDC_USERINFOLIST, m_PhoneBook);
- DDX_Text(pDX, IDC_PHONENUMBERS, m_strPhoneNums);
- DDX_Text(pDX, IDC_EDIT_Account, m_strAccount);
- DDX_Text(pDX, IDC_EDIT_PWD, m_strPassWord);
- DDX_Text(pDX, IDC_EDIT_Contant, m_strContent);
- DDV_MaxChars(pDX, m_strContent, 390);
- }
- BEGIN_MESSAGE_MAP(ClyfzSMSAppDlg, CDialog)
- ON_WM_SYSCOMMAND()
- ON_WM_TIMER()
- ON_WM_PAINT()
- ON_WM_DESTROY()
- ON_WM_CLOSE()
- ON_WM_QUERYDRAGICON()
- #if USE_TRAYICON
- ON_MESSAGE(WM_MY_TRAY_NOTIFICATION, ClyfzSMSAppDlg::OnTrayNotification)
- ON_REGISTERED_MESSAGE(WM_TASKBARCREATED, ClyfzSMSAppDlg::OnTaskBarCreated)
- #endif
- ON_COMMAND(Menu_AutoRun, &ClyfzSMSAppDlg::OnAutorun)
- ON_COMMAND(Menu_Exit, &ClyfzSMSAppDlg::OnExit)
- //}}AFX_MSG_MAP
- ON_BN_CLICKED(IDC_ADDUSER_BTN, &ClyfzSMSAppDlg::OnBnClickedAdduserBtn)
- ON_BN_CLICKED(IDC_DELUSER_BTN, &ClyfzSMSAppDlg::OnBnClickedDeluserBtn)
- ON_BN_CLICKED(IDC_EXCELIMPORT_BTN, &ClyfzSMSAppDlg::OnBnClickedExcelimportBtn)
- ON_BN_CLICKED(IDC_PHONEIMPORT_BTN, &ClyfzSMSAppDlg::OnBnClickedPhoneimportBtn)
- ON_BN_CLICKED(IDC_SENDMESSAGE_BTN, &ClyfzSMSAppDlg::OnBnClickedSendmessageBtn)
- ON_BN_CLICKED(IDC_MESSAGELOG_BTN, &ClyfzSMSAppDlg::OnBnClickedMessagelogBtn)
- ON_NOTIFY(NM_CLICK, IDC_USERINFOLIST, &ClyfzSMSAppDlg::OnNMClickUserinfolist)
- ON_BN_CLICKED(IDC_SAVEPWD_CHECK, &ClyfzSMSAppDlg::OnBnClickedSavepwdCheck)
- END_MESSAGE_MAP()
- // ClyfzSMSAppDlg 消息处理程序
- BOOL ClyfzSMSAppDlg::OnInitDialog()
- {
- //SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_HIDEWINDOW);
- //ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
- CDialog::OnInitDialog();
- // 将“关于...”菜单项添加到系统菜单中。
- // IDM_ABOUTBOX 必须在系统命令范围内。
- ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
- ASSERT(IDM_ABOUTBOX < 0xF000);
- CMenu* pSysMenu = GetSystemMenu(FALSE);
- if (pSysMenu != NULL)
- {
- BOOL bNameValid;
- CString strAboutMenu;
- bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
- ASSERT(bNameValid);
- if (!strAboutMenu.IsEmpty())
- {
- pSysMenu->AppendMenu(MF_SEPARATOR);
- pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
- }
- }
- // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- SetIcon(m_hIcon, TRUE); // 设置大图标
- SetIcon(m_hIcon, FALSE); // 设置小图标
- // TODO: 在此添加额外的初始化代码
- //初始化托盘
- InitTrayIcon();
- //登录帐号密码
- UpdateData();
- m_strAccount = g_szLoginAccount;
- m_strPassWord = g_szLoginPWD;
- g_IsSavePwd = g_IsSavePwd;
- ((CButton*)GetDlgItem(IDC_SAVEPWD_CHECK))->SetCheck(g_IsSavePwd);
- //初始化电话本
- m_PhoneBook.InsertColumn(0,_T("姓名"));
- m_PhoneBook.SetColumnWidth(0,58);
- m_PhoneBook.InsertColumn(1,_T("手机号码"));
- m_PhoneBook.SetColumnWidth(1,100);
- m_PhoneBook.SetExtendedStyle(m_PhoneBook.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
- //打开数据库
- CString strError = _T("");
- if(CDataManager::GetInstance()->OpenDataBase(g_szConnectAccess, _T(""), _T(""), strError) == S_FALSE)
- MessageBox(strError);
-
- //读取电话本
- CArray<CStringArray, CStringArray> arr;
- std::vector<CString> vFields;
- vFields.push_back(_T("name"));
- vFields.push_back(_T("phone"));
- CString strTableName = _T("contact");
- if(CDataManager::GetInstance()->Select(arr, strTableName, vFields) == -1)
- {
- MessageBox(_T("读取电话本失败"));
- return FALSE;
- }
-
- for(int i=0; i<arr.GetSize(); i++)
- {
- int nRow = m_PhoneBook.InsertItem(i, arr.ElementAt(i).ElementAt(0));
- m_PhoneBook.SetItemText(nRow, 1, arr.ElementAt(i).ElementAt(1)); //插入列
- }
- SetTimer(1, 60*1000, NULL);
- SetTimer(2, 1*1000, NULL);
- UpdateData(FALSE);
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
- void ClyfzSMSAppDlg::OnSysCommand(UINT nID, LPARAM lParam)
- {
- if ((nID & 0xFFF0) == IDM_ABOUTBOX)
- {
- CAboutDlg dlgAbout;
- dlgAbout.DoModal();
- }
- else
- {
- CDialog::OnSysCommand(nID, lParam);
- }
- }
- BOOL ClyfzSMSAppDlg::PreTranslateMessage(MSG* pMsg)
- {
- //ctrl键按下
- if(pMsg->message == WM_KEYDOWN)
- {
- CWnd* pWnd = GetFocus();
- if(!pWnd)
- return CDialog::PreTranslateMessage(pMsg);
-
- if(pWnd == GetDlgItem(IDC_USERINFOLIST) && pMsg->hwnd == m_PhoneBook.m_hWnd)
- {
- SHORT ret = GetKeyState(VK_CONTROL);
- if(ret)
- {
- if(pMsg->wParam == 'a' || pMsg->wParam == 'A')
- {
- //ctrl+a/A全选
- int nCount = m_PhoneBook.GetItemCount();
- if(nCount > 0)
- {
- //ClearLinkMan();
- m_strPhoneNums = _T("");
- for(int i = 0; i<nCount; i++)
- {
- // SLinkManInfo* p = new SLinkManInfo();
- m_PhoneBook.SetCheck(i, TRUE);
- m_PhoneBook.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); //高亮
- //p->strName = m_PhoneBook.GetItemText(i, 0);
- //p->strNum = m_PhoneBook.GetItemText(i, 1);
- m_strPhoneNums += m_PhoneBook.GetItemText(i, 1);
- if(i < nCount-1)
- m_strPhoneNums += _T(",");
- // m_vLinkManInfo.push_back(p);
- }
- m_nCountNum = nCount;
- m_NumEditCtrl.LineScroll(m_NumEditCtrl.GetLineCount());
- UpdateData(FALSE);
- }
- }
- }
- }
- else if(pWnd == GetDlgItem(IDC_EDIT_Contant) && pMsg->hwnd == GetDlgItem(IDC_EDIT_Contant)->m_hWnd)
- {
- //计算短信条数
- UpdateData();
- int nCount = m_strContent.GetLength()/70;
- if((nCount*70) < m_strContent.GetLength())
- nCount += 1;
- m_strTextCount.Format(_T("(现%d字,共%d条短信)"), m_strContent.GetLength(), nCount);
- GetDlgItem(IDC_STATIC_Count)->SetWindowText(m_strTextCount);
- UpdateData(FALSE);
- }
- }
- return CDialog::PreTranslateMessage(pMsg);
- }
- // 如果向对话框添加最小化按钮,则需要下面的代码
- // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
- // 这将由框架自动完成。
- void ClyfzSMSAppDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // 用于绘制的设备上下文
- SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
- // 使图标在工作区矩形中居中
- 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;
- // 绘制图标
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialog::OnPaint();
- }
- }
- //当用户拖动最小化窗口时系统调用此函数取得光标
- //显示。
- HCURSOR ClyfzSMSAppDlg::OnQueryDragIcon()
- {
- return static_cast<HCURSOR>(m_hIcon);
- }
- #if USE_TRAYICON
- void ClyfzSMSAppDlg::InitTrayIcon()
- {
- m_trayIcon.SetNotificationWnd(this, WM_MY_TRAY_NOTIFICATION);
- m_trayIcon.SetIcon(IDR_MAINFRAME, _T("短信处理程序"));
- m_trayIcon.SetIconInfos(IDI_ITRAY, IDI_ITRAY, IDI_ITRAY);
- m_trayIcon.SetDefaultTip(_T("短信处理程序"));
- }
- LRESULT ClyfzSMSAppDlg::OnTrayNotification(WPARAM wp, LPARAM lp)
- {
- if (m_isNotify)
- {
- static LPCSTR MouseMessages[] = { "WM_MOUSEMOVE",
- "WM_LBUTTONDOWN", "WM_LBUTTONUP", "WM_LBUTTONDBLCLK",
- "WM_RBUTTONDOWN", "WM_RBUTTONUP", "WM_RBUTTONDBLCLK",
- "WM_MBUTTONDOWN", "WM_MBUTTONUP", "WM_MBUTTONDBLCLK" };
- }
- if (wp != IDR_MAINFRAME)
- return m_trayIcon.OnTrayNotification(wp, lp);
- switch (lp)
- {
- case WM_RBUTTONUP:
- TrayRight();
- break;
- case WM_LBUTTONUP:
- break;
- case WM_LBUTTONDBLCLK:
- TaskNotifyIcon();
- break;
- default:
- break;
- }
- return 0;
- }
- LRESULT ClyfzSMSAppDlg::OnTaskBarCreated(WPARAM wp, LPARAM lp)
- {
- Shell_NotifyIcon(NIM_ADD, &m_trayIcon.m_nid);
- return 1;
- }
- // 托盘的工作内容;
- void ClyfzSMSAppDlg::TaskNotifyIcon()
- {
- if (!m_bNoticeTray)
- {
- m_trayIcon.SetIcon(IDR_MAINFRAME, _T("短信处理程序"));
- ShowWindow(SW_SHOWNORMAL);
- m_bNoticeTray = TRUE;
- }
- else
- {
- m_trayIcon.SetIcon(IDR_MAINFRAME, _T("短信处理程序"));
- ShowWindow(SW_HIDE);
- m_bNoticeTray = FALSE;
- }
- }
- void ClyfzSMSAppDlg::TrayRight()
- {
- CMenu menu;
- if (!menu.LoadMenu(IDR_MENU1))
- return;
- CMenu* pSubMenu = menu.GetSubMenu(0);
- if (!pSubMenu)
- return;
- if (m_bAutoRuning)
- pSubMenu->CheckMenuItem(Menu_AutoRun, MF_BYCOMMAND | MF_CHECKED);
- else
- pSubMenu->CheckMenuItem(Menu_AutoRun, MF_BYCOMMAND | MF_UNCHECKED);
- CPoint point;
- GetCursorPos(&point);
- ::SetForegroundWindow(m_hWnd);
- pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
- }
- #endif
- void ClyfzSMSAppDlg::OnAutorun()
- {
- m_bAutoRuning = !m_bAutoRuning;
- AfxGetApp()->WriteProfileInt(_T("lyfzSMSApp"), _T("Autoruning"), m_bAutoRuning);
- //BYTE szData[1024] = { 0 };
- //::GetModuleFileNameA(NULL, (LPSTR)szData, sizeof(szData));
- AddAutoSysRun((LPBYTE)g_szModuleFileName,_tcslen(g_szModuleFileName)*sizeof(TCHAR), _T("lyfzSMSApp"), m_bAutoRuning);
- }
- void ClyfzSMSAppDlg::OnExit()
- {
- UpdateData();
- if(g_IsSavePwd)
- SavePassWord(g_IsSavePwd, m_strAccount, m_strPassWord);
- else
- SavePassWord(g_IsSavePwd, m_strAccount, _T(""));
- CDialog::OnOK();
- }
- void ClyfzSMSAppDlg::OnTimer(UINT_PTR nIDEvent)
- {
- if(nIDEvent == 1)
- {
- //查找第一行数据列:account,phones,content,timestamp,msgcount,log,status,Sid,autoid(自动编号)
- CArray<CStringArray, CStringArray> arr;
- std::vector<CString> vFields;
- vFields.push_back(_T("account"));
- vFields.push_back(_T("phones"));
- vFields.push_back(_T("content"));
- vFields.push_back(_T("timestamp"));
- vFields.push_back(_T("msgcount"));
- vFields.push_back(_T("log"));
- vFields.push_back(_T("status"));
- vFields.push_back(_T("Sid"));
- vFields.push_back(_T("autoid"));
- CString strTableName = _T("sendreg");
- CString strfilter = _T("Sid<>'0'");
- if(CDataManager::GetInstance()->Select(arr, strTableName, vFields, strfilter) == -1)
- {
- MessageBox(_T("查询记录失败"));
- return;
- }
- if(arr.GetSize() == 0)
- return;
- for(int i=0; i<arr.GetSize(); i++)
- {
- if(arr.ElementAt(i).GetSize() == 0)
- continue;
- if(arr.ElementAt(i).ElementAt(7) != _T("0"))
- {
- SSendReg sr;
- sr.account = arr.ElementAt(i).ElementAt(0);
- sr.phones = arr.ElementAt(i).ElementAt(1);
- sr.content = arr.ElementAt(i).ElementAt(2);
- sr.timestamp = arr.ElementAt(i).ElementAt(3);
- sr.msgcount = arr.ElementAt(i).ElementAt(4);
- sr.log = arr.ElementAt(i).ElementAt(5);
- sr.status = arr.ElementAt(i).ElementAt(6);
- sr.Sid = arr.ElementAt(i).ElementAt(7);
- sr.autoid = arr.ElementAt(i).ElementAt(8);
- m_SMSHandle.GetSMState(g_szSMSServer, g_dwTCPSMSPort, m_strAccount, m_strPassWord, &sr);
- }
- }
- }
- else if(nIDEvent == 2)
- {
- /*
- //计算短信条数
- UpdateData();
- int nCount = m_strContent.GetLength()/70;
- if((nCount*70) < m_strContent.GetLength())
- nCount += 1;
- m_strTextCount.Format(_T("(现%d字,共%d条短信)"), m_strContent.GetLength(), nCount);
- GetDlgItem(IDC_STATIC_Count)->SetWindowText(m_strTextCount);
- UpdateData(FALSE);
- */
- }
- }
- void ClyfzSMSAppDlg::OnDestroy()
- {
- //删除缓存里的所有联系人信息
- ClearLinkMan();
- CDialog::OnDestroy();
- }
- void ClyfzSMSAppDlg::OnClose()
- {
- ShowWindow(SW_HIDE);
- #if USE_TRAYICON
- m_bNoticeTray = FALSE;
- #endif
- }
- //************************************//
- // [函数]:MultiLineShow
- // [描述]:自动换行
- // [参数]:
- // buf 要处理的字符串
- // [返回]:1成功
- //************************************//
- void ClyfzSMSAppDlg::AddElementAtList(CArray<CStringArray, CStringArray>& arr)
- {
- int nCount = m_PhoneBook.GetItemCount();
-
- int nIdx = nCount;
- for(int i=0; i<arr.GetSize(); i++)
- {
- CString strName = arr.ElementAt(i).ElementAt(0);
- CString strPhoneNum = arr.ElementAt(i).ElementAt(1);
- int nRow = m_PhoneBook.InsertItem(nIdx, strName);
- m_PhoneBook.SetItemText(nRow, 1, strPhoneNum); //插入列
- CString strTableName = _T("contact");
- CString strValues = _T("");
- strValues = _T("'") + strName + _T("','") + strPhoneNum + _T("'");
- CDataManager::GetInstance()->Insert(strTableName, strValues);
- ++nIdx;
- }
- UpdateData(FALSE);
- }
- //************************************//
- // [函数]:MultiLineShow
- // [描述]:自动换行
- // [参数]:
- // buf 要处理的字符串
- // [返回]:1成功
- //************************************//
- int ClyfzSMSAppDlg::AutoChangeLine(char* buf)
- {
- int ret = 1;
- return ret;
- }
- //************************************//
- // [函数]:OnBnClickedAdduserBtn
- // [描述]:添加用户手机号
- // [参数]:
- // [返回]:
- //************************************//
- void ClyfzSMSAppDlg::OnBnClickedAdduserBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- CAddContacts dlg;
- if(dlg.DoModal() == IDCANCEL)
- return;
- UpdateData();
- int nCount = m_PhoneBook.GetItemCount();
- int nRow = m_PhoneBook.InsertItem(nCount, dlg.m_strName);
- m_PhoneBook.SetItemText(nRow, 1, dlg.m_strPhoneNum); //插入列
- //添加数据到表contact
- CString strTableName = _T("contact");
- CString strValues = _T("");
- strValues = _T("'") + dlg.m_strName + _T("','") + dlg.m_strPhoneNum + _T("'");
- CDataManager::GetInstance()->Insert(strTableName, strValues);
- UpdateData(FALSE);
- }
- //************************************//
- // [函数]:OnBnClickedDeluserBtn
- // [描述]:删除电话本里的号码
- // [参数]:
- // [返回]:
- //************************************//
- void ClyfzSMSAppDlg::OnBnClickedDeluserBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- if(MessageBox(_T("确定要删除选中的联系人吗?"), _T("提示"), MB_YESNO | MB_ICONWARNING) == IDNO)
- {
- ClearLinkMan();
- return;
- }
- //获取选中项数据
- int nIdx = 0;
- CString strnames(_T("")), strphones(_T(""));
- int nCount = m_PhoneBook.GetItemCount();
- for(int i=0; i<nCount; i++)
- {
- if( m_PhoneBook.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
- {
- if(nIdx != 0)
- {
- strnames += _T(",");
- strphones += _T(",");
- }
- strnames += _T("'") + m_PhoneBook.GetItemText(i, 0) + _T("'");
- strphones += _T("'") + m_PhoneBook.GetItemText(i, 1) + _T("'");
- ++nIdx;
- }
- }
- //select * from contact where name in ('fd','gg','dddd') and phone in ('13760634561','13760631451','13553437881');
- CString strFilter = _T("name in (") + strnames + _T(") and phone in (") + strphones + _T(")");
- CString strTableName = _T("contact");
-
- //删除列表选中的项
- if(CDataManager::GetInstance()->Delete(strTableName, strFilter) != -1)
- {
- int nSize = m_PhoneBook.GetItemCount();
- for(int i = nSize-1; i>=0; i--)
- {
- if( m_PhoneBook.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
- m_PhoneBook.DeleteItem(i);
- }
- }
- UpdateData(FALSE);
- }
- //************************************//
- // [函数]:OnBnClickedExcelimportBtn
- // [描述]:excel表导入
- // [参数]:
- // [返回]:
- //************************************//
- void ClyfzSMSAppDlg::OnBnClickedExcelimportBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- /*
- Excel接口 导入类 头文件 说明
- _Application CApplicaton Application.h Excel应用程序。
- Workbooks CWorkbooks Workbooks.h 工作簿的容器,里面包括了Excel应用程序打开的所有工作簿。
- _Workbook CWorkbook Workbook.h 单个工作簿。
- Worksheets CWorksheets Worksheets.h 单个工作簿中的Sheet表格的容器,包括该工作簿中的所有Sheet。
- _Worksheet CWorksheet Worksheet.h 单个Sheet表格。
- Range CRange Range.h 一定数量的单元格,可对单元格进行单个或多个单元格进行操作。
- */
- CString strFindFile = _T("");
- LPCTSTR lpszFile = strFindFile.GetBuffer();
- LPCTSTR lpszFilter = _T("(Excel*.xls)|*.xls||");
- DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT | OFN_ENABLESIZING;
- CFileDialog dlg(TRUE, _T("default Files (*xls)"), NULL, dwFlags, lpszFilter, NULL);
- dlg.m_ofn.lpstrTitle = _T("请加载相关电话本文件");
- // 最多可以打开20个文件
- dlg.m_ofn.nMaxFile = 20 * MAX_PATH;
- dlg.m_ofn.lpstrFile = new TCHAR[dlg.m_ofn.nMaxFile];
- ZeroMemory(dlg.m_ofn.lpstrFile, sizeof(TCHAR) * dlg.m_ofn.nMaxFile);
- // 显示文件对话框,获得文件名集合
- int retval = dlg.DoModal();
- if(retval==IDCANCEL)
- {
- delete [] dlg.m_ofn.lpstrFile;
- dlg.m_ofn.lpstrFile = NULL;
- return;
- }
- POSITION pos_file;
- pos_file = dlg.GetStartPosition();
- CArray<CString, CString> ary_filename;
- while(pos_file != NULL)
- ary_filename.Add(dlg.GetNextPathName(pos_file));
- int nFileCount = ary_filename.GetSize();
-
- ExcelForODBC excelio;
- //根据扩展名读取相关文件
- for(int i=0; i<nFileCount; i++)
- {
- CString str_ext;
- str_ext = ary_filename.GetAt(i).Right(3);
- if ( str_ext.CollateNoCase(_T("xls")) != 0 )
- {
- str_ext.Format(_T("文件:%s 不是xls文件,无法读取..."),ary_filename.GetAt(i).GetBuffer());
- continue;
- }
- CArray<CStringArray, CStringArray> arr;
- CString strSql = _T("select * from [sheet1$]");
- DWORD dwListCount = m_PhoneBook.GetItemCount();
- excelio.ReadFromExcel(ary_filename.GetAt(i), strSql, arr);
- if(arr.GetSize() > 0)
- {
- AddElementAtList(arr);
- str_ext.Format(_T("文件:%s 导入成功..."), ary_filename.GetAt(i).GetBuffer());
- MessageBox(str_ext);
- }
- }
- delete [] dlg.m_ofn.lpstrFile;
- dlg.m_ofn.lpstrFile = NULL;
- }
- //************************************//
- // [函数]:OnBnClickedExcelimportBtn
- // [描述]:手机导入
- // [参数]:
- // [返回]:
- //************************************//
- void ClyfzSMSAppDlg::OnBnClickedPhoneimportBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- CPhoneNumImport dlg;
- dlg.SetTelNumbers(m_strPhoneNums);
- if (dlg.DoModal() == IDCANCEL)
- {
- return;
- }
- m_nCountNum = dlg.GetPhones()->GetSize();
- m_strPhoneNums = dlg.GetDifferTelNumbers();
- UpdateData(FALSE);
- }
- //************************************//
- // [函数]:OnBnClickedSendmessageBtn
- // [描述]:发送短信
- // [参数]:
- // [返回]:
- //************************************//
- void ClyfzSMSAppDlg::OnBnClickedSendmessageBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- UpdateData();
- if(m_strAccount == _T(""))
- {
- MessageBox(_T("请输入登录的帐户"));
- return;
- }
- if(!CheckNumFormat(m_strAccount))
- {
- MessageBox(_T("帐号只能是数字"));
- return;
- }
- if(m_strPassWord == _T(""))
- {
- MessageBox(_T("请输入密码"));
- return;
- }
- if(m_strContent == _T(""))
- {
- MessageBox(_T("还没有编辑信息"));
- return;
- }
- if(m_strPhoneNums == _T(""))
- {
- MessageBox(_T("请编辑要发送的号码"));
- return;
- }
-
- //添加新记录 列名:account,phones,content,timestamp,msgcount,log,status,Sid,autoid(自动编号)
- CString strTableName = _T("sendreg");
- int nCurrSendCount = 0;
- CString strfiles = _T("account,phones,content,[timestamp],msgcount,log,status,Sid");
- CString strStampTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- CString strValues = _T("");
- strValues = _T("'") + m_strAccount + _T("','") + m_strPhoneNums + _T("','") + m_strContent + _T("','") + strStampTime + _T("','0','0/1','0','0'");
- if(CDataManager::GetInstance()->Insert(strTableName, strValues, strfiles) == -1)
- {
- MessageBox(_T("添加记录失败"));
- return;
- }
- //查找第一行数据
- CArray<CStringArray, CStringArray> arr;
- std::vector<CString> vFields;
- vFields.push_back(_T("autoid"));
- CString strstrSelLineCount = _T("top 1");
- if(CDataManager::GetInstance()->Select(arr, strTableName, vFields, _T(""), strstrSelLineCount, _T("autoid desc")) == -1)
- {
- MessageBox(_T("查询记录失败"));
- return;
- }
- if(arr.GetSize() == 0)
- return;
- //发送信息
- //获取帐号余额
- if(m_SMSHandle.SendSMToSever(g_szSMSServer, g_dwTCPSMSPort, m_strAccount, m_strPassWord, m_strPhoneNums, m_strContent, strStampTime, arr.ElementAt(0).ElementAt(0)) == 0)
- {
- MessageBox(_T("发送成功!"));
- }
- // QuerAccountInfo tAccountInfo;
- // m_SMSHandle.GetSMSBlance(g_szSMSServer, g_dwTCPSMSPort,m_strAccount,m_strPassWord,tAccountInfo);
- /*
-
- */
- }
- //************************************//
- // [函数]:OnBnClickedMessagelogBtn
- // [描述]:短信记录
- // [参数]:
- // [返回]:
- //************************************//
- void ClyfzSMSAppDlg::OnBnClickedMessagelogBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- CSendMsgLogDlg dlg;
- dlg.m_strAccount = m_strAccount;
- dlg.m_strPassWord = m_strPassWord;
- dlg.m_pSMSHandle = &m_SMSHandle;
- if(dlg.DoModal() == IDCANCEL)
- return;
- }
- void ClyfzSMSAppDlg::OnNMClickUserinfolist(NMHDR *pNMHDR, LRESULT *pResult)
- {
- LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
- // TODO: 在此添加控件通知处理程序代码
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- if(pNMListView->iItem != -1)
- {
- //单击行列pNMListView->iItem, pNMListView->iSubItem
- UpdateData();
- m_strPhoneNums = m_PhoneBook.GetItemText(pNMListView->iItem, 1);
- m_nCountNum = 1;
- UpdateData(FALSE);
- }
- *pResult = 0;
- }
- //************************************//
- // [函数]:DelPhoneNum
- // [描述]:删除
- // [参数]:
- // nIdx 选中索引
- // [返回]:1成功, 0失败
- //************************************//
- int ClyfzSMSAppDlg::DelPhoneNum(const int nIdx)
- {
- return 1;
- }
- void ClyfzSMSAppDlg::OnBnClickedSavepwdCheck()
- {
- // TODO: 在此添加控件通知处理程序代码
- UpdateData();
- g_IsSavePwd = !g_IsSavePwd;
- ((CButton*)GetDlgItem(IDC_SAVEPWD_CHECK))->SetCheck(g_IsSavePwd);
- if(g_IsSavePwd)
- SavePassWord(g_IsSavePwd, m_strAccount, m_strPassWord);
- else
- SavePassWord(g_IsSavePwd, m_strAccount, _T(""));
- UpdateData(FALSE);
- }
- void ClyfzSMSAppDlg::SavePassWord(const int nIsSave, const CString& strAccount, const CString& strPWD)
- {
- CString str = _T("");
- TCHAR szFile[MAX_PATH + 1] = _T("");
- _stprintf_s(szFile, _T("%s\\SMScfg.ini"), g_szModulePath);
- WritePrivateProfileString(_T("SMSHostInfo"), _T("LoginAccount"), strAccount, szFile);
- WritePrivateProfileString(_T("SMSHostInfo"), _T("LoginPassWord"), strPWD, szFile);
- CString strIsSave = _T("");
- strIsSave.Format(_T("%d"), nIsSave);
- WritePrivateProfileString(_T("SMSHostInfo"), _T("IsSavePWD"), strIsSave, szFile);
- }
- //************************************//
- // [函数]:ClearLinkMan
- // [描述]:清除缓存里的联系人
- // [参数]:
- // [返回]:
- //************************************//
- void ClyfzSMSAppDlg::ClearLinkMan()
- {
- if(!m_vLinkManInfo.empty())
- {
- std::vector<SLinkManInfo*>::iterator iter = m_vLinkManInfo.begin();
- for(;iter != m_vLinkManInfo.end();)
- {
- if((*iter) != NULL)
- delete (*iter);
- ++iter;
- }
- m_vLinkManInfo.clear();
- }
- }
|