MsgReg.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. // MsgReg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ylgl.h"
  5. #include "MsgReg.h"
  6. #include "MyMdi.H"
  7. #include "ModifyDinDan.h"
  8. #include "InputPsw.h"
  9. #include "TakeMoney2.h"
  10. #include "NeroDlg.h"
  11. #include "ClientRequirement.h"
  12. #include "./helper/ffsco.h"
  13. #include "ClientRequirement.h"
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19. #pragma comment(lib, "Shlwapi.lib")
  20. /////////////////////////////////////////////////////////////////////////////
  21. // MsgReg
  22. IMPLEMENT_DYNCREATE(MsgReg, MyFormView)
  23. MsgReg::MsgReg()
  24. : MyFormView(MsgReg::IDD)
  25. {
  26. //{{AFX_DATA_INIT(MsgReg)
  27. m_radio1 = 0;
  28. //}}AFX_DATA_INIT
  29. g_nYearposTemp=g_nYearpos;
  30. }
  31. MsgReg::~MsgReg()
  32. {
  33. g_nYearpos=g_nYearposTemp;
  34. }
  35. void MsgReg::DoDataExchange(CDataExchange* pDX)
  36. {
  37. MyFormView::DoDataExchange(pDX);
  38. //{{AFX_DATA_MAP(MsgReg)
  39. DDX_Control(pDX, IDC_LIST6, m_List3);
  40. DDX_Control(pDX, IDC_LIST4, m_List2);
  41. DDX_Control(pDX, IDC_LIST2, m_List1);
  42. DDX_Control(pDX, IDC_STATIC1, m_static1);
  43. DDX_Radio(pDX, IDC_RADIO1, m_radio1);
  44. //}}AFX_DATA_MAP
  45. }
  46. BEGIN_MESSAGE_MAP(MsgReg, MyFormView)
  47. //{{AFX_MSG_MAP(MsgReg)
  48. ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
  49. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  50. ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
  51. ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
  52. ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2)
  53. ON_NOTIFY(NM_DBLCLK, IDC_LIST4, OnDblclkList4)
  54. ON_BN_CLICKED(IDC_BUTshowphoto, OnDelMsg)
  55. ON_BN_CLICKED(IDC_RADIO9, OnRadio9)
  56. ON_NOTIFY(NM_DBLCLK, IDC_LIST6, OnDblclkList6)
  57. ON_BN_CLICKED(IDC_BUTburncd, OnBUTburncd)
  58. //}}AFX_MSG_MAP
  59. END_MESSAGE_MAP()
  60. /////////////////////////////////////////////////////////////////////////////
  61. // MsgReg diagnostics
  62. #ifdef _DEBUG
  63. void MsgReg::AssertValid() const
  64. {
  65. MyFormView::AssertValid();
  66. }
  67. void MsgReg::Dump(CDumpContext& dc) const
  68. {
  69. MyFormView::Dump(dc);
  70. }
  71. #endif //_DEBUG
  72. /////////////////////////////////////////////////////////////////////////////
  73. // MsgReg message handlers
  74. void MsgReg::OnInitialUpdate()
  75. {
  76. MyFormView::OnInitialUpdate();
  77. if(IsHasRights2new(49))
  78. {
  79. GetDlgItem(IDC_BUTshowphoto)->EnableWindow(1);
  80. }
  81. else
  82. {
  83. GetDlgItem(IDC_BUTshowphoto)->EnableWindow(0);GetDlgItem(IDC_BUTburncd)->EnableWindow(0);
  84. }
  85. // if(atoi(g_cominfoarray.ElementAt(0).ElementAt(49)))
  86. // GetDlgItem(IDC_RADIO9)->ShowWindow (SW_SHOW);
  87. // TODO: Add your specialized code here and/or call the base class
  88. CMyMdi Mdi;
  89. Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this);
  90. // Here we create the outbar control using the splitter as its parent
  91. // and setting its id to the first pane.
  92. CRect rc2;
  93. GetWindowRect(rc2);
  94. ::MoveWindow(m_hWnd,g_rc.left,g_rc.top,g_rc.Width(),g_rc.Height(),TRUE);
  95. EnumChildWindows(m_hWnd,(WNDENUMPROC)EnumChildProc,0);
  96. m_static1.SetFont (&g_titlefont);
  97. m_List1.SetHeadings("号码,100;内容,300;时间,100;条数,100;报告,100;发送人,100" );
  98. m_List1.LoadColumnInfo (128);
  99. m_List2.SetHeadings("套系价格,100;预约日期,100;客人选择,100;类别,100;手机,100;内容,100;时间,100;发送人,100" );
  100. m_List2.LoadColumnInfo (129);
  101. m_List3.SetHeadings("客人,150;电话,150;内容,250;时间,150" );
  102. m_List3.LoadColumnInfo (160);
  103. g_sendhead.bsql=0;
  104. g_sendhead.code[0]=65;
  105. g_sendhead.code[1]=66;
  106. g_sendhead.code[2]=119;
  107. g_sendhead.tabcount=3;
  108. g_pMainWnd->ProcessChatMessageRequest2(1);if(g_bSendOK==0)return;
  109. DataToArray(&m_List1array, &m_List2array, &m_List3array);
  110. FillGrid();
  111. m_List2.ShowWindow (SW_HIDE);
  112. m_List3.ShowWindow (SW_HIDE);
  113. }
  114. void MsgReg::FillGrid()
  115. {
  116. UpdateData();
  117. if(m_radio1==0)
  118. {
  119. m_List1.DeleteAllItems2 ();
  120. int ii=0;
  121. m_List1.m_arLabels.SetSize( m_List1array.GetSize (), 1 );
  122. int count=0;
  123. for(ii=0; ii<m_List1.m_arLabels.GetSize (); ii++)
  124. {
  125. m_List1.m_arLabels.ElementAt (count++).Copy (m_List1array.ElementAt (ii));
  126. }
  127. m_List1.m_arLabels.SetSize(count, 1);
  128. ii=count;
  129. m_List1.m_LabelCount=ii;
  130. m_List1.SetItemCountEx (ii);
  131. CString str;
  132. str.Format ("记录数:%d", ii);
  133. if(m_radio1==0)SetDlgItemText(IDC_STATIC2, str);
  134. }
  135. else if(m_radio1==1)
  136. {
  137. m_List2.DeleteAllItems2 ();
  138. int ii=0;
  139. m_List2.m_arLabels.SetSize( m_List2array.GetSize (), 1 );
  140. int count=0;
  141. for(ii=0; ii<m_List2.m_arLabels.GetSize (); ii++)
  142. {
  143. m_List2.m_arLabels.ElementAt (count++).Copy (m_List2array.ElementAt (ii));
  144. }
  145. m_List2.m_arLabels.SetSize(count, 1);
  146. ii=count;
  147. m_List2.m_LabelCount=ii;
  148. m_List2.SetItemCountEx (ii);
  149. CString str;
  150. str.Format ("记录数:%d", ii);
  151. if(m_radio1==1)SetDlgItemText(IDC_STATIC2, str);
  152. }
  153. else
  154. {
  155. m_List3.DeleteAllItems2 ();
  156. int ii=0;
  157. m_List3.m_arLabels.SetSize( m_List3array.GetSize (), 1 );
  158. int count=0;
  159. for(ii=0; ii<m_List3.m_arLabels.GetSize (); ii++)
  160. {
  161. m_List3.m_arLabels.ElementAt (count++).Copy (m_List3array.ElementAt (ii));
  162. }
  163. m_List3.m_arLabels.SetSize(count, 1);
  164. ii=count;
  165. m_List3.m_LabelCount=ii;
  166. m_List3.SetItemCountEx (ii);
  167. CString str;
  168. str.Format ("记录数:%d", ii);
  169. if(m_radio1==2)SetDlgItemText(IDC_STATIC2, str);
  170. }
  171. }
  172. void MsgReg::OnBUTclose()
  173. {
  174. // TODO: Add your control notification handler code here
  175. GetParent()->SendMessage(WM_CLOSE);
  176. }
  177. BOOL MsgReg::PreTranslateMessage(MSG* pMsg)
  178. {
  179. // TODO: Add your specialized code here and/or call the base class
  180. try
  181. {
  182. if(pMsg->message==WM_KEYDOWN)
  183. {
  184. switch (pMsg->wParam)
  185. {
  186. case 0x43: // copy
  187. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  188. {
  189. GetFocus()->SendMessage(WM_COPY);
  190. return TRUE;
  191. }
  192. break;
  193. case 0x56: //Ctrl + V:
  194. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  195. {
  196. GetFocus()->SendMessage(WM_PASTE);
  197. return TRUE;
  198. }
  199. break;
  200. case 0x58: // cut
  201. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  202. {
  203. GetFocus()->SendMessage(WM_CUT);
  204. return TRUE;
  205. }
  206. break;
  207. case 0x5A: //undo
  208. case 0x59: //redo
  209. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  210. {
  211. GetFocus()->SendMessage(WM_UNDO);
  212. return TRUE;
  213. }
  214. break;
  215. }
  216. }
  217. return MyFormView::PreTranslateMessage(pMsg);
  218. }
  219. catch(...)
  220. {
  221. }
  222. }
  223. void MsgReg::OnButton1()
  224. {
  225. // TODO: Add your control notification handler code here
  226. g_sendhead.bsql=0;
  227. g_sendhead.code[0]=65;
  228. g_sendhead.code[1]=119;
  229. g_sendhead.tabcount=2;
  230. g_pMainWnd->ProcessChatMessageRequest2(1);if(g_bSendOK==0)return;
  231. DataToArray(&m_List1array, &m_List3array);
  232. FillGrid();
  233. }
  234. void MsgReg::OnRadio1()
  235. {
  236. // TODO: Add your control notification handler code here
  237. m_List1.ShowWindow (SW_SHOW);
  238. m_List2.ShowWindow (SW_HIDE);
  239. m_List3.ShowWindow (SW_HIDE);
  240. FillGrid();
  241. }
  242. void MsgReg::OnRadio2()
  243. {
  244. // TODO: Add your control notification handler code here
  245. m_List2.ShowWindow (SW_SHOW);
  246. m_List1.ShowWindow (SW_HIDE);
  247. m_List3.ShowWindow (SW_HIDE);
  248. FillGrid();
  249. }
  250. void MsgReg::OnRadio9()
  251. {
  252. // TODO: Add your control notification handler code here
  253. m_List3.ShowWindow (SW_SHOW);
  254. m_List1.ShowWindow (SW_HIDE);
  255. m_List2.ShowWindow (SW_HIDE);
  256. FillGrid();
  257. }
  258. void MsgReg::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult)
  259. {
  260. // TODO: Add your control notification handler code here
  261. POSITION pos;
  262. pos=m_List1.GetFirstSelectedItemPosition();
  263. if(pos==NULL)
  264. {
  265. return;
  266. }
  267. int iItem = m_List1.GetNextSelectedItem(pos);
  268. CString time = m_List1.GetItemText(iItem, 2);
  269. #if JEFF_TEST_ON
  270. // 查询依然不完整,会有两条或以上查询条件重复的记录。若要精确,加上短信内容。
  271. CString filter = _T("");
  272. filter.Format(_T("[timestamp]='%s' and phones='%s'"),m_List1.GetItemText(iItem, 2),m_List1.GetItemText(iItem, 0));
  273. //filter.Format(_T("[timestamp]='%s' and phones='%s' and [content]='%s'"),
  274. // m_List1.GetItemText(iItem, 2), m_List1.GetItemText(iItem, 0), m_List1.GetItemText(iItem, 1));
  275. // 语句太长了,返回不了。
  276. #else
  277. CString filter="[timestamp]='"+time+"'";
  278. #endif
  279. g_sendhead.bsql=0;
  280. g_sendhead.code[0]=78;
  281. g_sendhead.tabcount=1;
  282. g_pMainWnd->ProcessChatMessageRequest2(filter);
  283. if(g_bSendOK==0)return;
  284. DataToArray(&g_List1array);
  285. if(g_List1array.GetSize ())
  286. {
  287. CClientRequirement dlg;
  288. dlg.m_bSave =0;
  289. dlg.m_nMode =1;
  290. dlg.m_bz2 =g_List1array.ElementAt (0).ElementAt (0);
  291. dlg.DoModal ();
  292. }
  293. *pResult = 0;
  294. }
  295. void MsgReg::OnDblclkList4(NMHDR* pNMHDR, LRESULT* pResult)
  296. {
  297. // TODO: Add your control notification handler code here
  298. POSITION pos;
  299. pos=m_List2.GetFirstSelectedItemPosition();
  300. if(pos==NULL)
  301. {
  302. return;
  303. }
  304. int iItem=m_List2.GetNextSelectedItem(pos);
  305. CString time=m_List2.GetItemText (iItem, 6);
  306. CString filter="[date]='"+time+"'";
  307. g_sendhead.bsql=0;
  308. g_sendhead.code[0]=79;
  309. g_sendhead.tabcount=1;
  310. g_pMainWnd->ProcessChatMessageRequest2(filter);if(g_bSendOK==0)return;
  311. DataToArray(&g_List1array);
  312. if(g_List1array.GetSize ())
  313. {
  314. CClientRequirement dlg;
  315. dlg.m_bSave =0;
  316. dlg.m_nMode =1;
  317. dlg.m_bz2 =g_List1array.ElementAt (0).ElementAt (0);
  318. dlg.DoModal ();
  319. }
  320. *pResult = 0;
  321. }
  322. void MsgReg::OnDelMsg() // 删除短信按钮; 需要重新处理,只根据时间来删除是严重错误的!
  323. {
  324. // TODO: Add your control notification handler code here
  325. if (IsHasRights2new(49) == 0)return;
  326. UpdateData();
  327. if (m_radio1 == 1)
  328. {
  329. POSITION pos;
  330. pos = m_List2.GetFirstSelectedItemPosition();
  331. if (pos == NULL)
  332. {
  333. AfxMessageBox("请先选中您要删除的短信!");
  334. return;
  335. }
  336. if (AfxMessageBox("提醒, 删除后将无法恢复, 是否继续?", MB_YESNO | MB_ICONINFORMATION) != IDYES)return;
  337. int iItem = m_List2.GetNextSelectedItem(pos);
  338. CString time = m_List2.GetItemText(iItem, 6);
  339. CString sql = "delete from [sendreg2] where [date]='" + time + "'"; // Jeff.删除短信记录条件过于简单,因为time的时间相同的记录有很多!
  340. g_sendhead.bsql = 1;
  341. g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return;
  342. g_sendhead.bsql = 0;
  343. g_sendhead.code[0] = 66;
  344. g_sendhead.tabcount = 1;
  345. g_pMainWnd->ProcessChatMessageRequest2(1); if (g_bSendOK == 0)return;
  346. DataToArray(&m_List2array);
  347. FillGrid();
  348. }
  349. else if (m_radio1 == 0)
  350. {
  351. POSITION pos;
  352. pos = m_List1.GetFirstSelectedItemPosition();
  353. if (pos == NULL)
  354. {
  355. AfxMessageBox("请先选中您要删除的短信!");
  356. return;
  357. }
  358. if (AfxMessageBox("提醒, 删除后将无法恢复, 是否继续?", MB_YESNO | MB_ICONINFORMATION) != IDYES)return;
  359. // int iItem=m_List1.GetNextSelectedItem(pos);
  360. int iItem;
  361. CString sql;
  362. int count = 0;
  363. while (pos)
  364. {
  365. iItem = m_List1.GetNextSelectedItem(pos);
  366. CString time = m_List1.GetItemText(iItem, 2);
  367. CString sql2 = "delete from sendreg where [timestamp]='" + time + "'***"; // Jeff.删除短信记录条件过于简单,因为time的时间相同的记录有很多!
  368. sql += sql2; count++;
  369. if (count > 19)break;
  370. }
  371. sql.TrimRight("***");
  372. g_sendhead.bsql = 1;
  373. g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return;
  374. OnButton1();
  375. }
  376. else
  377. {
  378. POSITION pos;
  379. pos = m_List3.GetFirstSelectedItemPosition();
  380. if (pos == NULL)
  381. {
  382. AfxMessageBox("请先选中您要删除的短信!");
  383. return;
  384. }
  385. if (AfxMessageBox("提醒, 删除后将无法恢复, 是否继续?", MB_YESNO | MB_ICONINFORMATION) != IDYES)return;
  386. int iItem = m_List3.GetNextSelectedItem(pos);
  387. CString time = m_List3.GetItemText(iItem, 3);
  388. CString content = m_List3.GetItemText(iItem, 2);
  389. CString sql = "delete from sendregreceive where [timestamp]='" + time + "' and [content]='" + content + "'";
  390. g_sendhead.bsql = 1;
  391. g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return;
  392. OnButton1();
  393. }
  394. }
  395. void MsgReg::OnDblclkList6(NMHDR* pNMHDR, LRESULT* pResult)
  396. {
  397. // TODO: Add your control notification handler code here
  398. POSITION pos;
  399. pos=m_List3.GetFirstSelectedItemPosition();
  400. if(pos==NULL)
  401. {
  402. return;
  403. }
  404. int iItem=m_List3.GetNextSelectedItem(pos);
  405. CString time=m_List3.GetItemText (iItem, 3);
  406. CString content=m_List3.GetItemText (iItem, 2);
  407. CString filter="[timestamp]='"+time+"' and [content]='"+content+"'";
  408. g_sendhead.bsql=0;
  409. g_sendhead.code[0]=119;
  410. g_sendhead.tabcount=1;
  411. g_pMainWnd->ProcessChatMessageRequest2(filter);if(g_bSendOK==0)return;
  412. DataToArray(&g_List1array);
  413. if(g_List1array.GetSize ())
  414. {
  415. CClientRequirement dlg;
  416. dlg.m_bSave =0;
  417. dlg.m_nMode =1;
  418. dlg.m_bz2 =g_List1array.ElementAt (0).ElementAt (2);
  419. dlg.DoModal ();
  420. }
  421. *pResult = 0;
  422. }
  423. void MsgReg::OnBUTburncd()
  424. {
  425. // TODO: Add your control notification handler code here
  426. CString str;
  427. str=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  428. ListToXLS(&m_List1, "c:\\"+str+"短信记录.xls", 1);
  429. }