// SupportSmsPlatformDlg.cpp : 实现文件 // #include "stdafx.h" #include "SupportSmsPlatform.h" #include "SupportSmsPlatformDlg.h" #include ".\supportsmsplatformdlg.h" #include "Global.h" #include "shlwapi.h" #ifdef _DEBUG #define new DEBUG_NEW #endif #define MYWM_NOTIFYICON WM_USER+1 // 用于应用程序“关于”菜单项的 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() // CSupportSmsPlatformDlg 对话框 CSupportSmsPlatformDlg::CSupportSmsPlatformDlg(CWnd* pParent /*=NULL*/) : CDialog(CSupportSmsPlatformDlg::IDD, pParent) , m_nRadio_Type(FALSE) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_bDlgShow = true; m_nSmsIndex = -1; m_nFileIndex = -1; m_nOperateType = -1; m_pDlg_ReadDB = NULL; m_pDlg_InsertDB = NULL; m_pDlg_CreateFile = NULL; } CSupportSmsPlatformDlg::~CSupportSmsPlatformDlg() { if( m_pDlg_ReadDB ) delete m_pDlg_ReadDB; m_pDlg_ReadDB = NULL; if( m_pDlg_InsertDB ) delete m_pDlg_InsertDB; m_pDlg_InsertDB = NULL; if( m_pDlg_CreateFile ) delete m_pDlg_CreateFile; m_pDlg_CreateFile = NULL; } void CSupportSmsPlatformDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Radio(pDX, IDC_RADIO1, m_nRadio_Type); DDX_Control(pDX, IDC_BTN_APPLY, m_Btn_Apply); } BEGIN_MESSAGE_MAP(CSupportSmsPlatformDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_WM_DESTROY() ON_MESSAGE(MYWM_NOTIFYICON,OnMyIconNotify) ON_WM_TIMER() ON_BN_CLICKED(IDC_BTN_APPLY, OnBnClickedBtnApply) ON_BN_CLICKED(IDC_RADIO1, OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, OnBnClickedRadio2) ON_BN_CLICKED(IDC_RADIO3, OnBnClickedRadio3) ON_WM_CTLCOLOR() ON_WM_ERASEBKGND() END_MESSAGE_MAP() // CSupportSmsPlatformDlg 消息处理程序 BOOL CSupportSmsPlatformDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将\“关于...\”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 TaskBarAddIcon(GetSafeHwnd(),100,AfxGetApp()->LoadIcon(IDR_MAINFRAME),"测试远程数据库" ); CHAR strFile[MAX_PATH + 1] = ""; CHAR strValue[MAX_PATH + 1] = ""; int iPosFile = 0; int iLenghtFile = 0; //////////////////////////////////////////////////////////////////////////// //获取应用名 //GetModuleFileName(AfxGetApp()->m_hInstance, g_strDirectory, MAX_PATH); GetModuleFileName(NULL, g_strDirectory, MAX_PATH); iLenghtFile = strlen(g_strDirectory); for (iPosFile = iLenghtFile - 1; iPosFile >= 0; iPosFile--) { if (g_strDirectory[iPosFile] == '\\') { g_strDirectory[iPosFile] = '\0'; break; } } m_sTxtPath.Format( "%s\\Log\\SupportSmsPlatform.txt",g_strDirectory ); #if 0 if( PathFileExists( m_sTxtPath ) ) DeleteFile( m_sTxtPath ); #endif CString str; str.Format( "%s\\set.ini",g_strDirectory ); g_IniFile.SetPath( str ); m_pDlg_ReadDB = new CDlg_ReadDB(); m_pDlg_ReadDB->Create( IDD_DLG_READDB,this ); m_pDlg_InsertDB = new CDlg_InsertDB(); m_pDlg_InsertDB->Create( IDD_DLG_INSERTDB,this ); m_pDlg_CreateFile = new CDlg_CreateFile(); m_pDlg_CreateFile->Create( IDD_DLG_CREATEFILE,this ); if( m_nRadio_Type==0 ) { m_pDlg_CreateFile->ShowWindow( false ); CRect rect; GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect ); ScreenToClient( rect ); m_pDlg_InsertDB->MoveWindow( rect ); m_pDlg_InsertDB->ShowWindow( true ); } return TRUE; // 除非设置了控件的焦点,否则返回 TRUE } void CSupportSmsPlatformDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else if (nID==SC_MINIMIZE) { Hide(); } else { CDialog::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CSupportSmsPlatformDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(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 CSupportSmsPlatformDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } BOOL CSupportSmsPlatformDlg::TaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip) { NOTIFYICONDATA d; d.cbSize=sizeof(NOTIFYICONDATA); d.hWnd=hwnd; d.uID=uID; d.uFlags=NIF_ICON | NIF_TIP | NIF_MESSAGE; d.uCallbackMessage=MYWM_NOTIFYICON; d.hIcon=hicon; if(lpszTip) lstrcpy(d.szTip,lpszTip); else d.szTip[0]='\0'; return Shell_NotifyIcon(NIM_ADD,&d); } BOOL CSupportSmsPlatformDlg::TaskBarModifyIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip) { NOTIFYICONDATA d; d.cbSize=sizeof(NOTIFYICONDATA); d.hWnd=hwnd; d.uID=uID; d.uFlags=NIF_ICON | NIF_TIP | NIF_MESSAGE; d.uCallbackMessage=MYWM_NOTIFYICON; d.hIcon=hicon; if(lpszTip) lstrcpy(d.szTip,lpszTip); else d.szTip[0]='\0'; return Shell_NotifyIcon(NIM_MODIFY,&d); } BOOL CSupportSmsPlatformDlg::TaskBarDeleteIcon(HWND hwnd, UINT uID) { NOTIFYICONDATA d; d.cbSize=sizeof(NOTIFYICONDATA); d.hWnd=hwnd; d.uID=uID; return Shell_NotifyIcon(NIM_DELETE,&d); } LRESULT CSupportSmsPlatformDlg::OnMyIconNotify(WPARAM wParam,LPARAM lParam) { //下面的程序作用是在状态栏中 UINT uMouseMsg=LOWORD(lParam); int L=1,R=2; static int nLNum=0,nRNum=0; switch(uMouseMsg) { case WM_LBUTTONDOWN: { if( m_bDlgShow ) Hide(); else Show(); }break; case WM_RBUTTONDOWN: break; } return 1; } void CSupportSmsPlatformDlg::Show() { ShowWindow(SW_SHOW); m_bDlgShow=true; } void CSupportSmsPlatformDlg::Hide() { ShowWindow(SW_HIDE); m_bDlgShow=false; } void CSupportSmsPlatformDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: 在此处添加消息处理程序代码 if( m_pDlg_InsertDB->m_bDBThreadStart ) CDBConnection::GetInstancePtr()->DBConnectionCheckThreadStop(); TaskBarDeleteIcon(GetSafeHwnd(),100); } void CSupportSmsPlatformDlg::OnTimer(UINT nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //if( nIDEvent==1 ) //{ // int nIndex=0; // CString sTime,sTel,sContent; // if( ReadLastDataFromFile( m_sTxtPath,nIndex,sTime,sTel,sContent ) ) // { // switch( m_nOperateType ) // { // case 0: // // CDBInterface::GetInstancePtr()->InsertSmsRecord( sTel,"",sTime,sContent,"",m_pDlg_InsertDB->m_sEdit_SQL, // m_pDlg_InsertDB->m_bCheck_KeyAutoAdd,m_pDlg_InsertDB->m_nEdit_KeyInit,m_pDlg_InsertDB->m_sEdit_Key ); // // if( m_pDlg_InsertDB->m_bCheck_KeyAutoAdd ) // { // m_pDlg_InsertDB->m_nEdit_KeyInit++; // } // break; // case 1: // WriteDataToFile( m_pDlg_CreateFile->m_sEdit_FilePath,m_pDlg_CreateFile->m_sEdit_Format,nIndex,sTime,sTel,sContent ); // break; // case 2: // break; // } // } //} CDialog::OnTimer(nIDEvent); } bool CSupportSmsPlatformDlg::WriteDataToFile( CString sPathName,CString sFormat,int iIndex,CString sTime,CString sTel,CString sContent ) { bool bRet = false; CString strTemp; CStdioFile MyFile; if(!MyFile.Open(sPathName,CFile::modeWrite)) MyFile.Open(sPathName,CFile::modeCreate|CFile::modeWrite); CString s; s.Format( "%d",iIndex ); sFormat.Replace( "通知索引",s ); sFormat.Replace( "sContent时间",sTime ); sFormat.Replace( "手机号码",sTel ); sFormat.Replace( "短信内容",sContent ); strTemp.Format("%s\n",sFormat ); MyFile.SeekToEnd(); MyFile.WriteString(strTemp); MyFile.Close(); return bRet; } bool CSupportSmsPlatformDlg::ReadLastDataFromFile( CString sPathName,int &iIndex,CString &sTime,CString &sTel,CString &sContent ) { bool bRet = false; CString sTemp,str; CStdioFile File; if(!File.Open(sPathName,CFile::modeRead)) return bRet; //File.Open(sPathName,CFile::modeRead);//CFile::modeCreate| int nIndex=0; while(File.ReadString(sTemp)) { if( nIndex>m_nFileIndex && sTemp.GetLength()>20 ) { bRet = true; str = sTemp; m_nFileIndex = nIndex; break; } nIndex++; } File.Close(); if( m_nFileIndex>=5000 ) { DeleteFile( sPathName ); m_nFileIndex = -1; } if( bRet ) { int nPos1=0,nPos2=0; CString s; nPos2 = str.Find( "***",nPos1 ); s = str.Mid( nPos1,nPos2-nPos1 ); iIndex = atoi( s ); nPos1 = nPos2; nPos2 = str.Find( "***",nPos1+3 ); sTime = str.Mid( nPos1+3,nPos2-nPos1-3 ); nPos1 = nPos2; nPos2 = str.Find( "***",nPos1+3 ); sTel = str.Mid( nPos1+3,nPos2-nPos1-3 ); nPos1 = nPos2; sContent = str.Mid( nPos1+3,str.GetLength()-nPos1-3 ); } return bRet; } void CSupportSmsPlatformDlg::OnBnClickedBtnApply() { UpdateData(); if( m_nRadio_Type==0 ) { if( m_pDlg_InsertDB->Apply() ) { m_nOperateType = m_nRadio_Type; //SetTimer( 1,1000*2,NULL );//读短信信息TXT的定时器 m_Btn_Apply.EnableWindow( false ); } } else if( m_nRadio_Type==1 ) { if( m_pDlg_CreateFile->Apply() ) { m_nOperateType = m_nRadio_Type; //SetTimer( 1,1000*2,NULL );//读短信信息TXT的定时器 m_Btn_Apply.EnableWindow( false ); } } } void CSupportSmsPlatformDlg::OnBnClickedRadio1() { UpdateData(); if( m_nRadio_Type==0 ) { m_pDlg_CreateFile->ShowWindow( false ); CRect rect; GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect ); ScreenToClient( rect ); m_pDlg_InsertDB->MoveWindow( rect ); m_pDlg_InsertDB->ShowWindow( true ); } } void CSupportSmsPlatformDlg::OnBnClickedRadio2() { UpdateData(); if( m_nRadio_Type==1 ) { m_pDlg_InsertDB->ShowWindow( false ); CRect rect; GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect ); ScreenToClient( rect ); m_pDlg_CreateFile->MoveWindow( rect ); m_pDlg_CreateFile->ShowWindow( true ); } } void CSupportSmsPlatformDlg::OnBnClickedRadio3() { //UpdateData(); //if( m_nRadio_Type==0 ) //{ // m_pDlg_InsertDB->ShowWindow( false ); // CRect rect; // GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect ); // ScreenToClient( rect ); // m_pDlg_ReadDB->MoveWindow( rect ); // m_pDlg_ReadDB->ShowWindow( true ); //} } HBRUSH CSupportSmsPlatformDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 int nID = pWnd->GetDlgCtrlID(); //HBRUSH B1 = CreateSolidBrush( g_ColorGround ); //HBRUSH B1 = CreateSolidBrush( g_Color3 ); if(nID == IDC_EDIT_CONTENT) { // pOldFont = pDC->SelectObject(&m_font1); // pDC->SelectObject( &font ); // pDC->SetTextColor(RGB(250, 0, 0)); // pDC->SetBkMode( TRANSPARENT ); // //pDC->SelectObject(pOldFont); // // //return B1; } // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } BOOL CSupportSmsPlatformDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 return CDialog::OnEraseBkgnd(pDC); }