MsgReg.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  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 "TakeMoney2.h"
  9. #include "NeroDlg.h"
  10. #include "ClientRequirement.h"
  11. #include "./helper/ffsco.h"
  12. #include "ClientRequirement.h"
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #undef THIS_FILE
  16. static char THIS_FILE[] = __FILE__;
  17. #endif
  18. #pragma comment(lib, "Shlwapi.lib")
  19. /////////////////////////////////////////////////////////////////////////////
  20. // MsgReg
  21. IMPLEMENT_DYNCREATE(MsgReg, MyFormView)
  22. MsgReg::MsgReg()
  23. : MyFormView(MsgReg::IDD)
  24. {
  25. //{{AFX_DATA_INIT(MsgReg)
  26. m_radio1 = 0;
  27. //}}AFX_DATA_INIT
  28. g_nYearposTemp=g_nYearpos;
  29. }
  30. MsgReg::~MsgReg()
  31. {
  32. g_nYearpos=g_nYearposTemp;
  33. }
  34. void MsgReg::DoDataExchange(CDataExchange* pDX)
  35. {
  36. MyFormView::DoDataExchange(pDX);
  37. //{{AFX_DATA_MAP(MsgReg)
  38. DDX_Control(pDX, IDC_LIST6, m_List3);
  39. DDX_Control(pDX, IDC_LIST4, m_List2);
  40. DDX_Control(pDX, IDC_LIST2, m_List1);
  41. DDX_Control(pDX, IDC_STATIC1, m_static1);
  42. DDX_Radio(pDX, IDC_RADIO1, m_radio1);
  43. //}}AFX_DATA_MAP
  44. }
  45. BEGIN_MESSAGE_MAP(MsgReg, MyFormView)
  46. //{{AFX_MSG_MAP(MsgReg)
  47. ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
  48. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  49. ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
  50. ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
  51. ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2)
  52. ON_NOTIFY(NM_DBLCLK, IDC_LIST4, OnDblclkList4)
  53. ON_BN_CLICKED(IDC_BUTshowphoto, OnDelMsg)
  54. ON_BN_CLICKED(IDC_RADIO9, OnRadio9)
  55. ON_NOTIFY(NM_DBLCLK, IDC_LIST6, OnDblclkList6)
  56. ON_BN_CLICKED(IDC_BUTburncd, OnBUTburncd)
  57. //}}AFX_MSG_MAP
  58. END_MESSAGE_MAP()
  59. /////////////////////////////////////////////////////////////////////////////
  60. // MsgReg diagnostics
  61. #ifdef _DEBUG
  62. void MsgReg::AssertValid() const
  63. {
  64. MyFormView::AssertValid();
  65. }
  66. void MsgReg::Dump(CDumpContext& dc) const
  67. {
  68. MyFormView::Dump(dc);
  69. }
  70. #endif //_DEBUG
  71. /////////////////////////////////////////////////////////////////////////////
  72. // MsgReg message handlers
  73. void MsgReg::OnInitialUpdate()
  74. {
  75. MyFormView::OnInitialUpdate();
  76. if(IsHasRights2new(49))
  77. {
  78. GetDlgItem(IDC_BUTshowphoto)->EnableWindow(1);
  79. }
  80. else
  81. {
  82. GetDlgItem(IDC_BUTshowphoto)->EnableWindow(0);GetDlgItem(IDC_BUTburncd)->EnableWindow(0);
  83. }
  84. // if(atoi(g_cominfoarray.ElementAt(0).ElementAt(49)))
  85. // GetDlgItem(IDC_RADIO9)->ShowWindow (SW_SHOW);
  86. // TODO: Add your specialized code here and/or call the base class
  87. CMyMdi Mdi;
  88. Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this);
  89. // Here we create the outbar control using the splitter as its parent
  90. // and setting its id to the first pane.
  91. CRect rc2;
  92. GetWindowRect(rc2);
  93. ::MoveWindow(m_hWnd,g_rc.left,g_rc.top,g_rc.Width(),g_rc.Height(),TRUE);
  94. EnumChildWindows(m_hWnd,(WNDENUMPROC)EnumChildProc,0);
  95. m_static1.SetFont (&g_titlefont);
  96. m_List1.SetHeadings("号码,100;内容,300;时间,100;条数,100;报告,100;发送人,100" );
  97. m_List1.LoadColumnInfo (128);
  98. m_List2.SetHeadings("套系价格,100;预约日期,100;客人选择,100;类别,100;手机,100;内容,100;时间,100;发送人,100" );
  99. m_List2.LoadColumnInfo (129);
  100. m_List3.SetHeadings("客人,150;电话,150;内容,250;时间,150" );
  101. m_List3.LoadColumnInfo (160);
  102. g_sendhead.bsql=0;
  103. g_sendhead.code[0]=65;
  104. g_sendhead.code[1]=66;
  105. g_sendhead.code[2]=119;
  106. g_sendhead.tabcount=3;
  107. g_pMainWnd->ProcessChatMessageRequest2(1);if(g_bSendOK==0)return;
  108. DataToArray(&m_List1array, &m_List2array, &m_List3array);
  109. FillGrid();
  110. m_List2.ShowWindow (SW_HIDE);
  111. m_List3.ShowWindow (SW_HIDE);
  112. }
  113. void MsgReg::FillGrid()
  114. {
  115. UpdateData();
  116. if(m_radio1==0)
  117. {
  118. m_List1.DeleteAllItems2 ();
  119. int ii=0;
  120. m_List1.m_arLabels.SetSize( m_List1array.GetSize (), 1 );
  121. int count=0;
  122. for(ii=0; ii<m_List1.m_arLabels.GetSize (); ii++)
  123. {
  124. m_List1.m_arLabels.ElementAt (count++).Copy (m_List1array.ElementAt (ii));
  125. }
  126. m_List1.m_arLabels.SetSize(count, 1);
  127. ii=count;
  128. m_List1.m_LabelCount=ii;
  129. m_List1.SetItemCountEx (ii);
  130. CString str;
  131. str.Format ("记录数:%d", ii);
  132. if(m_radio1==0)SetDlgItemText(IDC_STATIC2, str);
  133. }
  134. else if(m_radio1==1)
  135. {
  136. m_List2.DeleteAllItems2 ();
  137. int ii=0;
  138. m_List2.m_arLabels.SetSize( m_List2array.GetSize (), 1 );
  139. int count=0;
  140. for(ii=0; ii<m_List2.m_arLabels.GetSize (); ii++)
  141. {
  142. m_List2.m_arLabels.ElementAt (count++).Copy (m_List2array.ElementAt (ii));
  143. }
  144. m_List2.m_arLabels.SetSize(count, 1);
  145. ii=count;
  146. m_List2.m_LabelCount=ii;
  147. m_List2.SetItemCountEx (ii);
  148. CString str;
  149. str.Format ("记录数:%d", ii);
  150. if(m_radio1==1)SetDlgItemText(IDC_STATIC2, str);
  151. }
  152. else
  153. {
  154. m_List3.DeleteAllItems2 ();
  155. int ii=0;
  156. m_List3.m_arLabels.SetSize( m_List3array.GetSize (), 1 );
  157. int count=0;
  158. for(ii=0; ii<m_List3.m_arLabels.GetSize (); ii++)
  159. {
  160. m_List3.m_arLabels.ElementAt (count++).Copy (m_List3array.ElementAt (ii));
  161. }
  162. m_List3.m_arLabels.SetSize(count, 1);
  163. ii=count;
  164. m_List3.m_LabelCount=ii;
  165. m_List3.SetItemCountEx (ii);
  166. CString str;
  167. str.Format ("记录数:%d", ii);
  168. if(m_radio1==2)SetDlgItemText(IDC_STATIC2, str);
  169. }
  170. }
  171. void MsgReg::OnBUTclose()
  172. {
  173. // TODO: Add your control notification handler code here
  174. GetParent()->SendMessage(WM_CLOSE);
  175. }
  176. BOOL MsgReg::PreTranslateMessage(MSG* pMsg)
  177. {
  178. // TODO: Add your specialized code here and/or call the base class
  179. try
  180. {
  181. if(pMsg->message==WM_KEYDOWN)
  182. {
  183. switch (pMsg->wParam)
  184. {
  185. case 0x43: // copy
  186. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  187. {
  188. GetFocus()->SendMessage(WM_COPY);
  189. return TRUE;
  190. }
  191. break;
  192. case 0x56: //Ctrl + V:
  193. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  194. {
  195. GetFocus()->SendMessage(WM_PASTE);
  196. return TRUE;
  197. }
  198. break;
  199. case 0x58: // cut
  200. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  201. {
  202. GetFocus()->SendMessage(WM_CUT);
  203. return TRUE;
  204. }
  205. break;
  206. case 0x5A: //undo
  207. case 0x59: //redo
  208. if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
  209. {
  210. GetFocus()->SendMessage(WM_UNDO);
  211. return TRUE;
  212. }
  213. break;
  214. }
  215. }
  216. return MyFormView::PreTranslateMessage(pMsg);
  217. }
  218. catch(...)
  219. {
  220. }
  221. return TRUE;
  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. }