SupportSmsPlatformDlg.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. // SupportSmsPlatformDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "SupportSmsPlatform.h"
  5. #include "SupportSmsPlatformDlg.h"
  6. #include ".\supportsmsplatformdlg.h"
  7. #include "Global.h"
  8. #include "shlwapi.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #endif
  12. #define MYWM_NOTIFYICON WM_USER+1
  13. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
  14. class CAboutDlg : public CDialog
  15. {
  16. public:
  17. CAboutDlg();
  18. // 对话框数据
  19. enum { IDD = IDD_ABOUTBOX };
  20. protected:
  21. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  22. // 实现
  23. protected:
  24. DECLARE_MESSAGE_MAP()
  25. };
  26. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  27. {
  28. }
  29. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  30. {
  31. CDialog::DoDataExchange(pDX);
  32. }
  33. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  34. END_MESSAGE_MAP()
  35. // CSupportSmsPlatformDlg 对话框
  36. CSupportSmsPlatformDlg::CSupportSmsPlatformDlg(CWnd* pParent /*=NULL*/)
  37. : CDialog(CSupportSmsPlatformDlg::IDD, pParent)
  38. , m_nRadio_Type(FALSE)
  39. {
  40. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  41. m_bDlgShow = true;
  42. m_nSmsIndex = -1;
  43. m_nFileIndex = -1;
  44. m_nOperateType = -1;
  45. m_pDlg_ReadDB = NULL;
  46. m_pDlg_InsertDB = NULL;
  47. m_pDlg_CreateFile = NULL;
  48. }
  49. CSupportSmsPlatformDlg::~CSupportSmsPlatformDlg()
  50. {
  51. if( m_pDlg_ReadDB )
  52. delete m_pDlg_ReadDB;
  53. m_pDlg_ReadDB = NULL;
  54. if( m_pDlg_InsertDB )
  55. delete m_pDlg_InsertDB;
  56. m_pDlg_InsertDB = NULL;
  57. if( m_pDlg_CreateFile )
  58. delete m_pDlg_CreateFile;
  59. m_pDlg_CreateFile = NULL;
  60. }
  61. void CSupportSmsPlatformDlg::DoDataExchange(CDataExchange* pDX)
  62. {
  63. CDialog::DoDataExchange(pDX);
  64. DDX_Radio(pDX, IDC_RADIO1, m_nRadio_Type);
  65. DDX_Control(pDX, IDC_BTN_APPLY, m_Btn_Apply);
  66. }
  67. BEGIN_MESSAGE_MAP(CSupportSmsPlatformDlg, CDialog)
  68. ON_WM_SYSCOMMAND()
  69. ON_WM_PAINT()
  70. ON_WM_QUERYDRAGICON()
  71. //}}AFX_MSG_MAP
  72. ON_WM_DESTROY()
  73. ON_MESSAGE(MYWM_NOTIFYICON,OnMyIconNotify)
  74. ON_WM_TIMER()
  75. ON_BN_CLICKED(IDC_BTN_APPLY, OnBnClickedBtnApply)
  76. ON_BN_CLICKED(IDC_RADIO1, OnBnClickedRadio1)
  77. ON_BN_CLICKED(IDC_RADIO2, OnBnClickedRadio2)
  78. ON_BN_CLICKED(IDC_RADIO3, OnBnClickedRadio3)
  79. ON_WM_CTLCOLOR()
  80. ON_WM_ERASEBKGND()
  81. END_MESSAGE_MAP()
  82. // CSupportSmsPlatformDlg 消息处理程序
  83. BOOL CSupportSmsPlatformDlg::OnInitDialog()
  84. {
  85. CDialog::OnInitDialog();
  86. // 将\“关于...\”菜单项添加到系统菜单中。
  87. // IDM_ABOUTBOX 必须在系统命令范围内。
  88. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  89. ASSERT(IDM_ABOUTBOX < 0xF000);
  90. CMenu* pSysMenu = GetSystemMenu(FALSE);
  91. if (pSysMenu != NULL)
  92. {
  93. CString strAboutMenu;
  94. strAboutMenu.LoadString(IDS_ABOUTBOX);
  95. if (!strAboutMenu.IsEmpty())
  96. {
  97. pSysMenu->AppendMenu(MF_SEPARATOR);
  98. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  99. }
  100. }
  101. // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
  102. // 执行此操作
  103. SetIcon(m_hIcon, TRUE); // 设置大图标
  104. SetIcon(m_hIcon, FALSE); // 设置小图标
  105. // TODO: 在此添加额外的初始化代码
  106. TaskBarAddIcon(GetSafeHwnd(),100,AfxGetApp()->LoadIcon(IDR_MAINFRAME),"测试远程数据库" );
  107. CHAR strFile[MAX_PATH + 1] = "";
  108. CHAR strValue[MAX_PATH + 1] = "";
  109. int iPosFile = 0;
  110. int iLenghtFile = 0;
  111. ////////////////////////////////////////////////////////////////////////////
  112. //获取应用名
  113. //GetModuleFileName(AfxGetApp()->m_hInstance, g_strDirectory, MAX_PATH);
  114. GetModuleFileName(NULL, g_strDirectory, MAX_PATH);
  115. iLenghtFile = strlen(g_strDirectory);
  116. for (iPosFile = iLenghtFile - 1; iPosFile >= 0; iPosFile--)
  117. {
  118. if (g_strDirectory[iPosFile] == '\\')
  119. {
  120. g_strDirectory[iPosFile] = '\0';
  121. break;
  122. }
  123. }
  124. m_sTxtPath.Format( "%s\\Log\\SupportSmsPlatform.txt",g_strDirectory );
  125. #if 0
  126. if( PathFileExists( m_sTxtPath ) )
  127. DeleteFile( m_sTxtPath );
  128. #endif
  129. CString str;
  130. str.Format( "%s\\set.ini",g_strDirectory );
  131. g_IniFile.SetPath( str );
  132. m_pDlg_ReadDB = new CDlg_ReadDB();
  133. m_pDlg_ReadDB->Create( IDD_DLG_READDB,this );
  134. m_pDlg_InsertDB = new CDlg_InsertDB();
  135. m_pDlg_InsertDB->Create( IDD_DLG_INSERTDB,this );
  136. m_pDlg_CreateFile = new CDlg_CreateFile();
  137. m_pDlg_CreateFile->Create( IDD_DLG_CREATEFILE,this );
  138. if( m_nRadio_Type==0 )
  139. {
  140. m_pDlg_CreateFile->ShowWindow( false );
  141. CRect rect;
  142. GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect );
  143. ScreenToClient( rect );
  144. m_pDlg_InsertDB->MoveWindow( rect );
  145. m_pDlg_InsertDB->ShowWindow( true );
  146. }
  147. return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
  148. }
  149. void CSupportSmsPlatformDlg::OnSysCommand(UINT nID, LPARAM lParam)
  150. {
  151. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  152. {
  153. CAboutDlg dlgAbout;
  154. dlgAbout.DoModal();
  155. }
  156. else if (nID==SC_MINIMIZE)
  157. {
  158. Hide();
  159. }
  160. else
  161. {
  162. CDialog::OnSysCommand(nID, lParam);
  163. }
  164. }
  165. // 如果向对话框添加最小化按钮,则需要下面的代码
  166. // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
  167. // 这将由框架自动完成。
  168. void CSupportSmsPlatformDlg::OnPaint()
  169. {
  170. if (IsIconic())
  171. {
  172. CPaintDC dc(this); // 用于绘制的设备上下文
  173. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  174. // 使图标在工作矩形中居中
  175. int cxIcon = GetSystemMetrics(SM_CXICON);
  176. int cyIcon = GetSystemMetrics(SM_CYICON);
  177. CRect rect;
  178. GetClientRect(&rect);
  179. int x = (rect.Width() - cxIcon + 1) / 2;
  180. int y = (rect.Height() - cyIcon + 1) / 2;
  181. // 绘制图标
  182. dc.DrawIcon(x, y, m_hIcon);
  183. }
  184. else
  185. {
  186. CDialog::OnPaint();
  187. }
  188. }
  189. //当用户拖动最小化窗口时系统调用此函数取得光标显示。
  190. HCURSOR CSupportSmsPlatformDlg::OnQueryDragIcon()
  191. {
  192. return static_cast<HCURSOR>(m_hIcon);
  193. }
  194. BOOL CSupportSmsPlatformDlg::TaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
  195. {
  196. NOTIFYICONDATA d;
  197. d.cbSize=sizeof(NOTIFYICONDATA);
  198. d.hWnd=hwnd;
  199. d.uID=uID;
  200. d.uFlags=NIF_ICON | NIF_TIP | NIF_MESSAGE;
  201. d.uCallbackMessage=MYWM_NOTIFYICON;
  202. d.hIcon=hicon;
  203. if(lpszTip)
  204. lstrcpy(d.szTip,lpszTip);
  205. else
  206. d.szTip[0]='\0';
  207. return Shell_NotifyIcon(NIM_ADD,&d);
  208. }
  209. BOOL CSupportSmsPlatformDlg::TaskBarModifyIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
  210. {
  211. NOTIFYICONDATA d;
  212. d.cbSize=sizeof(NOTIFYICONDATA);
  213. d.hWnd=hwnd;
  214. d.uID=uID;
  215. d.uFlags=NIF_ICON | NIF_TIP | NIF_MESSAGE;
  216. d.uCallbackMessage=MYWM_NOTIFYICON;
  217. d.hIcon=hicon;
  218. if(lpszTip)
  219. lstrcpy(d.szTip,lpszTip);
  220. else
  221. d.szTip[0]='\0';
  222. return Shell_NotifyIcon(NIM_MODIFY,&d);
  223. }
  224. BOOL CSupportSmsPlatformDlg::TaskBarDeleteIcon(HWND hwnd, UINT uID)
  225. {
  226. NOTIFYICONDATA d;
  227. d.cbSize=sizeof(NOTIFYICONDATA);
  228. d.hWnd=hwnd;
  229. d.uID=uID;
  230. return Shell_NotifyIcon(NIM_DELETE,&d);
  231. }
  232. LRESULT CSupportSmsPlatformDlg::OnMyIconNotify(WPARAM wParam,LPARAM lParam)
  233. {
  234. //下面的程序作用是在状态栏中
  235. UINT uMouseMsg=LOWORD(lParam);
  236. int L=1,R=2;
  237. static int nLNum=0,nRNum=0;
  238. switch(uMouseMsg)
  239. {
  240. case WM_LBUTTONDOWN:
  241. {
  242. if( m_bDlgShow )
  243. Hide();
  244. else
  245. Show();
  246. }break;
  247. case WM_RBUTTONDOWN:
  248. break;
  249. }
  250. return 1;
  251. }
  252. void CSupportSmsPlatformDlg::Show()
  253. {
  254. ShowWindow(SW_SHOW);
  255. m_bDlgShow=true;
  256. }
  257. void CSupportSmsPlatformDlg::Hide()
  258. {
  259. ShowWindow(SW_HIDE);
  260. m_bDlgShow=false;
  261. }
  262. void CSupportSmsPlatformDlg::OnDestroy()
  263. {
  264. CDialog::OnDestroy();
  265. // TODO: 在此处添加消息处理程序代码
  266. if( m_pDlg_InsertDB->m_bDBThreadStart )
  267. CDBConnection::GetInstancePtr()->DBConnectionCheckThreadStop();
  268. TaskBarDeleteIcon(GetSafeHwnd(),100);
  269. }
  270. void CSupportSmsPlatformDlg::OnTimer(UINT nIDEvent)
  271. {
  272. // TODO: 在此添加消息处理程序代码和/或调用默认值
  273. //if( nIDEvent==1 )
  274. //{
  275. // int nIndex=0;
  276. // CString sTime,sTel,sContent;
  277. // if( ReadLastDataFromFile( m_sTxtPath,nIndex,sTime,sTel,sContent ) )
  278. // {
  279. // switch( m_nOperateType )
  280. // {
  281. // case 0:
  282. //
  283. // CDBInterface::GetInstancePtr()->InsertSmsRecord( sTel,"",sTime,sContent,"",m_pDlg_InsertDB->m_sEdit_SQL,
  284. // m_pDlg_InsertDB->m_bCheck_KeyAutoAdd,m_pDlg_InsertDB->m_nEdit_KeyInit,m_pDlg_InsertDB->m_sEdit_Key );
  285. //
  286. // if( m_pDlg_InsertDB->m_bCheck_KeyAutoAdd )
  287. // {
  288. // m_pDlg_InsertDB->m_nEdit_KeyInit++;
  289. // }
  290. // break;
  291. // case 1:
  292. // WriteDataToFile( m_pDlg_CreateFile->m_sEdit_FilePath,m_pDlg_CreateFile->m_sEdit_Format,nIndex,sTime,sTel,sContent );
  293. // break;
  294. // case 2:
  295. // break;
  296. // }
  297. // }
  298. //}
  299. CDialog::OnTimer(nIDEvent);
  300. }
  301. bool CSupportSmsPlatformDlg::WriteDataToFile( CString sPathName,CString sFormat,int iIndex,CString sTime,CString sTel,CString sContent )
  302. {
  303. bool bRet = false;
  304. CString strTemp;
  305. CStdioFile MyFile;
  306. if(!MyFile.Open(sPathName,CFile::modeWrite))
  307. MyFile.Open(sPathName,CFile::modeCreate|CFile::modeWrite);
  308. CString s;
  309. s.Format( "%d",iIndex );
  310. sFormat.Replace( "通知索引",s );
  311. sFormat.Replace( "sContent时间",sTime );
  312. sFormat.Replace( "手机号码",sTel );
  313. sFormat.Replace( "短信内容",sContent );
  314. strTemp.Format("%s\n",sFormat );
  315. MyFile.SeekToEnd();
  316. MyFile.WriteString(strTemp);
  317. MyFile.Close();
  318. return bRet;
  319. }
  320. bool CSupportSmsPlatformDlg::ReadLastDataFromFile( CString sPathName,int &iIndex,CString &sTime,CString &sTel,CString &sContent )
  321. {
  322. bool bRet = false;
  323. CString sTemp,str;
  324. CStdioFile File;
  325. if(!File.Open(sPathName,CFile::modeRead))
  326. return bRet;
  327. //File.Open(sPathName,CFile::modeRead);//CFile::modeCreate|
  328. int nIndex=0;
  329. while(File.ReadString(sTemp))
  330. {
  331. if( nIndex>m_nFileIndex && sTemp.GetLength()>20 )
  332. {
  333. bRet = true;
  334. str = sTemp;
  335. m_nFileIndex = nIndex;
  336. break;
  337. }
  338. nIndex++;
  339. }
  340. File.Close();
  341. if( m_nFileIndex>=5000 )
  342. {
  343. DeleteFile( sPathName );
  344. m_nFileIndex = -1;
  345. }
  346. if( bRet )
  347. {
  348. int nPos1=0,nPos2=0;
  349. CString s;
  350. nPos2 = str.Find( "***",nPos1 );
  351. s = str.Mid( nPos1,nPos2-nPos1 );
  352. iIndex = atoi( s );
  353. nPos1 = nPos2;
  354. nPos2 = str.Find( "***",nPos1+3 );
  355. sTime = str.Mid( nPos1+3,nPos2-nPos1-3 );
  356. nPos1 = nPos2;
  357. nPos2 = str.Find( "***",nPos1+3 );
  358. sTel = str.Mid( nPos1+3,nPos2-nPos1-3 );
  359. nPos1 = nPos2;
  360. sContent = str.Mid( nPos1+3,str.GetLength()-nPos1-3 );
  361. }
  362. return bRet;
  363. }
  364. void CSupportSmsPlatformDlg::OnBnClickedBtnApply()
  365. {
  366. UpdateData();
  367. if( m_nRadio_Type==0 )
  368. {
  369. if( m_pDlg_InsertDB->Apply() )
  370. {
  371. m_nOperateType = m_nRadio_Type;
  372. //SetTimer( 1,1000*2,NULL );//读短信信息TXT的定时器
  373. m_Btn_Apply.EnableWindow( false );
  374. }
  375. }
  376. else if( m_nRadio_Type==1 )
  377. {
  378. if( m_pDlg_CreateFile->Apply() )
  379. {
  380. m_nOperateType = m_nRadio_Type;
  381. //SetTimer( 1,1000*2,NULL );//读短信信息TXT的定时器
  382. m_Btn_Apply.EnableWindow( false );
  383. }
  384. }
  385. }
  386. void CSupportSmsPlatformDlg::OnBnClickedRadio1()
  387. {
  388. UpdateData();
  389. if( m_nRadio_Type==0 )
  390. {
  391. m_pDlg_CreateFile->ShowWindow( false );
  392. CRect rect;
  393. GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect );
  394. ScreenToClient( rect );
  395. m_pDlg_InsertDB->MoveWindow( rect );
  396. m_pDlg_InsertDB->ShowWindow( true );
  397. }
  398. }
  399. void CSupportSmsPlatformDlg::OnBnClickedRadio2()
  400. {
  401. UpdateData();
  402. if( m_nRadio_Type==1 )
  403. {
  404. m_pDlg_InsertDB->ShowWindow( false );
  405. CRect rect;
  406. GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect );
  407. ScreenToClient( rect );
  408. m_pDlg_CreateFile->MoveWindow( rect );
  409. m_pDlg_CreateFile->ShowWindow( true );
  410. }
  411. }
  412. void CSupportSmsPlatformDlg::OnBnClickedRadio3()
  413. {
  414. //UpdateData();
  415. //if( m_nRadio_Type==0 )
  416. //{
  417. // m_pDlg_InsertDB->ShowWindow( false );
  418. // CRect rect;
  419. // GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rect );
  420. // ScreenToClient( rect );
  421. // m_pDlg_ReadDB->MoveWindow( rect );
  422. // m_pDlg_ReadDB->ShowWindow( true );
  423. //}
  424. }
  425. HBRUSH CSupportSmsPlatformDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  426. {
  427. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  428. // TODO: 在此更改 DC 的任何属性
  429. int nID = pWnd->GetDlgCtrlID();
  430. //HBRUSH B1 = CreateSolidBrush( g_ColorGround );
  431. //HBRUSH B1 = CreateSolidBrush( g_Color3 );
  432. if(nID == IDC_EDIT_CONTENT)
  433. {
  434. // pOldFont = pDC->SelectObject(&m_font1);
  435. // pDC->SelectObject( &font );
  436. // pDC->SetTextColor(RGB(250, 0, 0));
  437. // pDC->SetBkMode( TRANSPARENT );
  438. // //pDC->SelectObject(pOldFont);
  439. //
  440. // //return B1;
  441. }
  442. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  443. return hbr;
  444. }
  445. BOOL CSupportSmsPlatformDlg::OnEraseBkgnd(CDC* pDC)
  446. {
  447. // TODO: 在此添加消息处理程序代码和/或调用默认值
  448. return CDialog::OnEraseBkgnd(pDC);
  449. }