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