MainFrm.cpp
上传用户:lmzg333
上传日期:2013-04-15
资源大小:376k
文件大小:26k
源码类别:

通讯/手机编程

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "vc_demo.h"
  5. #include "time.h"
  6. #include "SettingDlg.h"
  7. #include "senddatadlg.h"
  8. #include "WordThread.h"
  9. #include "AddUserDlg1.h"
  10. #include "MainFrm.h"
  11. #include "vc_demoView.h"
  12. #include "wcomm_dll.h"
  13. #include "winsock2.h"
  14. #include "GPRS_SMM.h"
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. #define NEWMENUITEM WM_USER+0x13
  21. /*
  22. int g_nCount = 0;
  23. UINT pfnReadData(LPVOID pParam)
  24. {
  25. char mess[512];
  26. data_record dr;
  27. CMainFrame* pt = (CMainFrame *)pParam;
  28. g_nCount = 0;
  29. SetWorkMode(1);   //0-use Window Messge, nonblock   1-block mode
  30. start_gprs_server((HWND)0x01,0x01,5003,mess);
  31. pt->AddTextToEditView(mess);
  32. while(g_nCount<10)//for (;;)
  33. {
  34. if (0 == do_read_proc(&dr,mess,true))
  35. {
  36. if (dr.m_data_len>=0)
  37. pt->AddTextToEditView(dr.m_userid);
  38. if (dr.m_data_len>0)
  39. pt->AddTextToEditView(dr.m_data_buf);
  40. }
  41.         Sleep(20);
  42. }
  43. stop_gprs_server(mess);
  44. pt->AddTextToEditView(mess);
  45. return 1;
  46. }
  47. */
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CMainFrame
  50. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  51. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  52. //{{AFX_MSG_MAP(CMainFrame)
  53. ON_WM_CREATE()
  54. ON_COMMAND(ID_MICLEAR, OnMiclear)
  55. ON_COMMAND(ID_MIOFFLINE, OnMioffline)
  56. ON_COMMAND(ID_MIREFRESHTABLE, OnMirefreshtable)
  57. ON_COMMAND(ID_MISENDDATA, OnMisenddata)
  58. ON_COMMAND(ID_MISTARTSERVICE, OnMistartservice)
  59. ON_COMMAND(ID_MISTOPSERVICE, OnMistopservice)
  60. ON_COMMAND(ID_QUIT, OnQuit)
  61. ON_WM_CLOSE()
  62. ON_MESSAGE(RV_MESS,ProcessRvData)
  63. ON_COMMAND(ID_MIANSWER, OnMianswer)
  64. ON_COMMAND(ID_MISHOWDATA, OnMishowdata)
  65. ON_COMMAND(ID_SHOWMENU, OnShowmenu)
  66. ON_COMMAND(ID_HELPCONTENT, OnHelpcontent)
  67. ON_WM_TIMER()
  68. ON_UPDATE_COMMAND_UI(ID_MISTARTSERVICE, OnUpdateMistartservice)
  69. ON_UPDATE_COMMAND_UI(ID_MIOFFLINE, OnUpdateMistopservice)
  70. ON_UPDATE_COMMAND_UI(ID_MIANSWER, OnUpdateMianswer)
  71. ON_COMMAND(ID_MISERVERSETTING, OnMiserversetting)
  72. ON_UPDATE_COMMAND_UI(ID_SHOWMENU, OnUpdateShowmenu)
  73. ON_COMMAND(ID_MIOFFLINEALL, OnMiofflineall)
  74. ON_COMMAND(ID_MIVIEWWORD, OnMiviewword)
  75. ON_UPDATE_COMMAND_UI(ID_MIVIEWWORD, OnUpdateMiviewword)
  76. ON_COMMAND(ID_USERINFOIN, OnUserinfoin)
  77. ON_COMMAND(ID_USERINFOOUT, OnUserinfoout)
  78. ON_COMMAND(ID_MENUSMSSTART, OnMenusmsstart)
  79. ON_COMMAND(ID_MENUSMSEXIT, OnMenusmsexit)
  80. ON_COMMAND(ID_Adduser, OnAdduser)
  81. ON_COMMAND(ID_DELETE_USER, OnDeleteUser)
  82. ON_UPDATE_COMMAND_UI(ID_Adduser, OnUpdateAdduser)
  83. ON_UPDATE_COMMAND_UI(ID_DELETE_USER, OnUpdateDeleteUser)
  84. ON_UPDATE_COMMAND_UI(ID_USERINFOIN, OnUpdateUserinfoin)
  85. ON_UPDATE_COMMAND_UI(ID_USERINFOOUT, OnUpdateUserinfoout)
  86. ON_COMMAND(ID_DISCONNECT_PPP, OnDisconnectPpp)
  87. ON_UPDATE_COMMAND_UI(ID_DISCONNECT_PPP, OnUpdateDisconnectPpp)
  88. ON_UPDATE_COMMAND_UI(ID_MIREFRESHTABLE, OnUpdateMistopservice)
  89. ON_UPDATE_COMMAND_UI(ID_MISENDDATA, OnUpdateMistopservice)
  90. ON_UPDATE_COMMAND_UI(ID_MISTOPSERVICE, OnUpdateMistopservice)
  91. ON_UPDATE_COMMAND_UI(ID_MIOFFLINEALL, OnUpdateMistopservice)
  92. ON_COMMAND(ID_STOP_TO_SEND, OnStopToSend)
  93. ON_UPDATE_COMMAND_UI(ID_STOP_TO_SEND, OnUpdateStopToSend)
  94. ON_COMMAND(ID_START_TO_SEND, OnStartToSend)
  95. ON_UPDATE_COMMAND_UI(ID_START_TO_SEND, OnUpdateStartToSend)
  96. ON_COMMAND(ID_DISCARD_DATA, OnDiscardData)
  97. ON_UPDATE_COMMAND_UI(ID_DISCARD_DATA, OnUpdateDiscardData)
  98. //}}AFX_MSG_MAP
  99. ON_UPDATE_COMMAND_UI_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, OnUpdateViewStyles)
  100. ON_COMMAND_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, OnViewStyle)
  101. ON_MESSAGE(ID_MISENDDATA,OnMisenddata)
  102. END_MESSAGE_MAP()
  103. static UINT indicators[] =
  104. {
  105. ID_SEPARATOR, 
  106. ID_SEPARATOR, 
  107.     ID_SEPARATOR 
  108. // status line indicator
  109. //ID_INDICATOR_CAPS,
  110. //ID_INDICATOR_NUM,
  111. //ID_INDICATOR_SCRL,
  112. //0x1234
  113. };
  114. /////////////////////////////////////////////////////////////////////////////
  115. // CMainFrame construction/destruction
  116. CMainFrame::CMainFrame()
  117. {
  118. // TODO: add member initialization code here
  119. m_bAutoMenuEnable=false;
  120. this->m_bServerRunning=false;
  121.     this->m_bAnswer=FALSE;
  122. this->m_viewword=TRUE;
  123. memset(this->m_userid,0x00,12);
  124. this->m_IsAdduserDlg =FALSE;
  125. init_option(&m_option);
  126. }
  127. CMainFrame::~CMainFrame()
  128. {
  129. }
  130. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  131. {
  132. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  133. return -1;
  134. if (!m_wndMenuBar.Create(this) ||
  135. !m_wndMenuBar.LoadMenuBar(IDR_MAINFRAME))
  136. {
  137. TRACE0("Failed to create toolbarn");
  138. return -1;      // faile to create
  139. }
  140. if (!m_wndToolBar.CreateEx(this, 
  141. TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_LIST,
  142. WS_CHILD | WS_VISIBLE | CBRS_TOP
  143. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY 
  144. | CBRS_SIZE_DYNAMIC
  145. )
  146. || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  147. {
  148. TRACE0("Failed to create toolbarn");
  149. return -1;      // fail to create
  150. }
  151. if (!m_wndStatusBar.Create(this) ||
  152. !m_wndStatusBar.SetIndicators(indicators,
  153.   sizeof(indicators)/sizeof(UINT)))
  154. {
  155. TRACE0("Failed to create status barn");
  156. return -1;      // fail to create
  157. }
  158. // TODO: Delete these three lines if you don't want the toolbar to
  159. //  be dockable
  160. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  161. m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
  162. EnableDocking(CBRS_ALIGN_ANY);
  163. DockControlBar(&m_wndMenuBar);
  164. DockControlBar(&m_wndToolBar);
  165. SetToolBarStyle();
  166. SetStatusBarStyle();
  167. AddToSysMenu();
  168. return 0;
  169. }
  170. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
  171. CCreateContext* pContext)
  172. {
  173. // create splitter window
  174. if (!m_wndSplitter.CreateStatic(this, 1, 2))
  175. return FALSE;
  176. if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(130, 100), pContext))
  177. {
  178. m_wndSplitter.DestroyWindow();
  179. return FALSE;
  180. }
  181. if (!m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_VISIBLE | WS_CHILD | WS_BORDER,m_wndSplitter.IdFromRowCol(0,1)))
  182. return FALSE;
  183. if (!m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CVc_demoView), CSize(100, 200), pContext) ||
  184. !m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CBottomEditView), CSize(100, 100), pContext))
  185. {
  186. m_wndSplitter2.DestroyWindow();
  187. return FALSE;
  188. }
  189. return TRUE;
  190. }
  191. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  192. {
  193. if( !CFrameWnd::PreCreateWindow(cs) )
  194. return FALSE;
  195. // TODO: Modify the Window class or styles here by modifying
  196. //  the CREATESTRUCT cs
  197. return TRUE;
  198. }
  199. /////////////////////////////////////////////////////////////////////////////
  200. // CMainFrame diagnostics
  201. #ifdef _DEBUG
  202. void CMainFrame::AssertValid() const
  203. {
  204. CFrameWnd::AssertValid();
  205. }
  206. void CMainFrame::Dump(CDumpContext& dc) const
  207. {
  208. CFrameWnd::Dump(dc);
  209. }
  210. #endif //_DEBUG
  211. /////////////////////////////////////////////////////////////////////////////
  212. // CMainFrame message handlers
  213. CVc_demoView* CMainFrame::GetRightPane()
  214. {
  215. CWnd* pWnd = m_wndSplitter2.GetPane(0, 0);
  216. CVc_demoView* pView = DYNAMIC_DOWNCAST(CVc_demoView, pWnd);
  217. return pView;
  218. }
  219. CLeftView* CMainFrame::GetLeftPane()
  220. {
  221. CWnd* pWnd = m_wndSplitter.GetPane(0, 0);
  222. CLeftView* pView = DYNAMIC_DOWNCAST(CLeftView, pWnd);
  223. return pView;
  224. }
  225. CBottomEditView* CMainFrame::GetBottompane()
  226. {
  227. CWnd* pWnd = m_wndSplitter2.GetPane(1, 0);
  228. CBottomEditView* pView = DYNAMIC_DOWNCAST(CBottomEditView, pWnd);
  229. return pView;
  230. }
  231. void CMainFrame::OnUpdateViewStyles(CCmdUI* pCmdUI)
  232. {
  233. // TODO: customize or extend this code to handle choices on the
  234. // View menu.
  235. CVc_demoView* pView = GetRightPane(); 
  236. // if the right-hand pane hasn't been created or isn't a view,
  237. // disable commands in our range
  238. if (pView == NULL)
  239. pCmdUI->Enable(FALSE);
  240. else
  241. {
  242. DWORD dwStyle = pView->GetStyle() & LVS_TYPEMASK;
  243. // if the command is ID_VIEW_LINEUP, only enable command
  244. // when we're in LVS_ICON or LVS_SMALLICON mode
  245. if (pCmdUI->m_nID == ID_VIEW_LINEUP)
  246. {
  247. if (dwStyle == LVS_ICON || dwStyle == LVS_SMALLICON)
  248. pCmdUI->Enable();
  249. else
  250. pCmdUI->Enable(FALSE);
  251. }
  252. else
  253. {
  254. // otherwise, use dots to reflect the style of the view
  255. pCmdUI->Enable();
  256. BOOL bChecked = FALSE;
  257. switch (pCmdUI->m_nID)
  258. {
  259. case ID_VIEW_DETAILS:
  260. bChecked = (dwStyle == LVS_REPORT);
  261. break;
  262. case ID_VIEW_SMALLICON:
  263. bChecked = (dwStyle == LVS_SMALLICON);
  264. break;
  265. case ID_VIEW_LARGEICON:
  266. bChecked = (dwStyle == LVS_ICON);
  267. break;
  268. case ID_VIEW_LIST:
  269. bChecked = (dwStyle == LVS_LIST);
  270. break;
  271. default:
  272. bChecked = FALSE;
  273. break;
  274. }
  275. pCmdUI->SetRadio(bChecked ? 1 : 0);
  276. }
  277. }
  278. }
  279. void CMainFrame::OnViewStyle(UINT nCommandID)
  280. {
  281. // TODO: customize or extend this code to handle choices on the
  282. // View menu.
  283. CVc_demoView* pView = GetRightPane();
  284. // if the right-hand pane has been created and is a CVc_demoView,
  285. // process the menu commands...
  286. if (pView != NULL)
  287. {
  288. DWORD dwStyle = -1;
  289. switch (nCommandID)
  290. {
  291. case ID_VIEW_LINEUP:
  292. {
  293. // ask the list control to snap to grid
  294. CListCtrl& refListCtrl = pView->GetListCtrl();
  295. refListCtrl.Arrange(LVA_SNAPTOGRID);
  296. }
  297. break;
  298. // other commands change the style on the list control
  299. case ID_VIEW_DETAILS:
  300. dwStyle = LVS_REPORT;
  301. break;
  302. case ID_VIEW_SMALLICON:
  303. dwStyle = LVS_SMALLICON;
  304. break;
  305. case ID_VIEW_LARGEICON:
  306. dwStyle = LVS_ICON;
  307. break;
  308. case ID_VIEW_LIST:
  309. dwStyle = LVS_LIST;
  310. break;
  311. }
  312. // change the style; window will repaint automatically
  313. if (dwStyle != -1)
  314. pView->ModifyStyle(LVS_TYPEMASK, dwStyle);
  315. }
  316. }
  317. void CMainFrame::SetToolBarStyle()
  318. {
  319. CImageList img;
  320. m_wndToolBar.GetToolBarCtrl().SetButtonWidth(40, 100);
  321. m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
  322.     //m_wndToolBar.SetButtonStyle(8,TBSTYLE_CHECK);
  323. m_wndToolBar.SetButtonStyle(4,m_wndToolBar.GetButtonStyle(4) 
  324.                            | TBSTYLE_DROPDOWN);
  325. img.Create(IDB_HOTTOOLBAR, 32, 0, RGB(255, 0, 255));
  326. m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
  327. img.Detach();
  328. img.Create(IDB_COLDTOOLBAR, 32, 0, RGB(255, 0, 255));
  329. m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
  330. img.Detach();
  331. for(int i = 0; i < m_wndToolBar.GetCount(); i++) 
  332. UINT id = m_wndToolBar.GetItemID(i); 
  333. CString s;
  334.     if (!s.LoadString(id)) 
  335. continue;
  336.     int j = s.Find(_T('n')); 
  337.     if(j < 0) continue;
  338.     s = s.Right(s.GetLength() - j - 1); 
  339.     m_wndToolBar.SetButtonText(i,s); 
  340. }
  341. CRect rect; 
  342. m_wndToolBar.GetItemRect(0,&rect); 
  343. m_wndToolBar.SetSizes(rect.Size(),CSize(32,32));
  344. }
  345. void CMainFrame::OnMiclear() 
  346. {
  347. // TODO: Add your command handler code here
  348. CEdit &ce=this->GetBottompane()->GetEditCtrl();
  349. ce.SetWindowText("");
  350. }
  351. void CMainFrame::OnMioffline() 
  352. {
  353. char buf[64];
  354. if (11==strlen(m_userid))
  355. {
  356. sprintf(buf,"确认使  %s 下线吗?",this->m_userid);
  357.     if (IDYES==MessageBox(buf,"确认",MB_YESNO | MB_ICONINFORMATION))
  358. {
  359. do_close_one_user((unsigned char *)m_userid,NULL);
  360. this->RefreshUserTable();
  361. }
  362. }
  363. }
  364. void CMainFrame::OnMirefreshtable() 
  365. {
  366. this->RefreshUserTable();
  367. }
  368. void CMainFrame::OnMisenddata() 
  369. {
  370. CTreeCtrl &tc=this->GetLeftPane()->GetTreeCtrl();
  371. CSendDataDlg sdd(NULL,&tc);
  372. sdd.SetUserId(this->m_userid);
  373. sdd.DoModal();
  374. }
  375. void CMainFrame::OnMistartservice() 
  376. {
  377. char mess[512];
  378. int iResult;
  379. //AddFilterIP(inet_addr("192.168.0.243"));
  380. //SetCustomIP(inet_addr("192.168.0.1"));
  381. /*iResult=start_gprs_server(this->m_hWnd,
  382.                       RV_MESS,
  383.   m_option.m_iServerPort,
  384.   mess);*/
  385. iResult=start_net_service(this->m_hWnd,
  386.                       RV_MESS,
  387.   m_option.m_iServerPort,
  388.   mess);
  389. if (iResult>=0)
  390. {    
  391. if ((m_option.m_bSysAutoPoll) && (m_option.m_iPollTimeInterval>0) && (m_option.m_iOffLineTime>0))
  392.             this->SetTimer(1,(m_option.m_iPollTimeInterval)*1000,NULL);
  393.     m_bServerRunning=true;
  394. }
  395. AddTextToEditView(mess,false);
  396. //AfxBeginThread(RUNTIME_CLASS(CWordThread));
  397. }
  398. void CMainFrame::OnMistopservice() 
  399. {
  400. // TODO: Add your command handler code here
  401. char mess[512];
  402. if (m_option.m_bSysAutoPoll)
  403. this->KillTimer(1);
  404. do_close_all_user(mess);
  405. //this->AddTextToEditView(mess);
  406. //stop_gprs_server(mess);
  407. stop_net_service(mess);
  408. this->AddTextToEditView(mess,true);
  409. this->m_bServerRunning=false;
  410. this->GetRightPane()->ClearAllItem();
  411. this->GetLeftPane()->ClearAllItem();
  412. }
  413. void CMainFrame::OnQuit() 
  414. {
  415. // TODO: Add your command handler code here
  416. this->OnClose();
  417. }
  418. void CMainFrame::OnClose() 
  419. {
  420. // TODO: Add your message handler code here and/or call default
  421. if (IDYES==MessageBox("确定要退出吗?","退出",MB_YESNO | MB_ICONINFORMATION))
  422. {
  423. if (m_bServerRunning)
  424. {
  425. this->OnMistopservice();
  426. }
  427. CFrameWnd::OnClose();
  428. }
  429. }
  430. void CMainFrame::ProcessRvData(WPARAM wparam, LPARAM lparam)
  431. {
  432. data_record dr;
  433. static char buf[2048];
  434. if (do_read_proc(&dr,NULL,m_bAnswer)>=0)
  435. {
  436. if (dr.m_data_len>0)
  437. {
  438. //whether show head or not
  439. if (m_option.m_bShowHead)
  440. {
  441. sprintf(buf,"rnuserid:%s,time:%s,len:%d",
  442. dr.m_userid,dr.m_recv_date,dr.m_data_len);
  443. this->AddTextToEditView(buf);
  444. }
  445. //Hex or not to show data
  446. if (m_option.m_bHexShow)
  447. {
  448. this->PrintData(dr.m_data_buf, dr.m_data_len);
  449. }
  450. else
  451. {
  452. this->AddTextToEditView(dr.m_data_buf);
  453. }
  454. }
  455. else //data_len=0,it means logon or logout
  456. {
  457. this->RefreshUserTable();
  458. if (0x01==dr.m_data_type)
  459. sprintf(buf,"%s  登录",dr.m_userid);
  460. else if (0x02==dr.m_data_type)
  461. sprintf(buf,"%s  注销",dr.m_userid);
  462. else if (0x0d==dr.m_data_type)
  463. sprintf(buf,"%s  参数设置成功",dr.m_userid);
  464. else if (0x0b==dr.m_data_type)
  465. sprintf(buf,"%s  参数查询成功",dr.m_userid);
  466. else if (0x06==dr.m_data_type)
  467. {
  468. sprintf(buf,"%s  断开PPP连接成功",dr.m_userid);
  469. delete_one_user((unsigned char *)dr.m_userid,NULL);
  470. this->RefreshUserTable();
  471. }
  472. else if (0x07==dr.m_data_type)
  473. sprintf(buf,"%s  停止向DSC发送数据",dr.m_userid);
  474. else if (0x08==dr.m_data_type)
  475. sprintf(buf,"%s  允许向DSC发送数据",dr.m_userid);
  476. else if (0x0A==dr.m_data_type)
  477. sprintf(buf,"%s   丢弃用户数据",dr.m_userid);
  478. else
  479. sprintf(buf,"%s",dr.m_userid);
  480. this->m_wndStatusBar.SetPaneText(1,buf,TRUE);
  481. }
  482. }
  483. }
  484. void CMainFrame::AddTextToEditView(char * szContent,bool newline)
  485. {
  486. if (szContent)
  487. {
  488.     CString text;
  489.     CEdit &ce=this->GetBottompane()->GetEditCtrl();
  490.     if (ce.GetLineCount()>100)
  491.     ce.SetWindowText("");
  492. ce.GetWindowText(text);
  493. if (newline)
  494. ce.SetWindowText(text+"rn"+szContent);
  495. else
  496. ce.SetWindowText(text+szContent);
  497. ce.LineScroll(ce.GetLineCount());
  498. }
  499. }
  500. void CMainFrame::AddTextToEditView(int iContent,bool newline)
  501. {
  502. CString text;
  503. char buf[32];
  504. sprintf(buf,"%d",iContent);
  505.     CEdit &ce=this->GetBottompane()->GetEditCtrl();
  506. if (ce.GetLineCount()>100)
  507. ce.SetWindowText("");
  508. ce.GetWindowText(text);
  509. if (newline)
  510. ce.SetWindowText(text+"rn"+buf);
  511. else
  512. ce.SetWindowText(text+buf);
  513. ce.LineScroll(ce.GetLineCount());
  514. }
  515. void CMainFrame::RefreshUserTable(int flag)
  516. {
  517. int i,iMaxDTUAmount;
  518. user_info ui;
  519. bool   bShow;
  520. time_t t_now,t_update;
  521. this->GetRightPane()->ClearAllItem();
  522. this->GetLeftPane()->ClearAllItem();
  523. iMaxDTUAmount=get_max_user_amount();
  524. for (i=0;i<iMaxDTUAmount;i++)
  525. {
  526. ui.m_status=0;
  527. get_user_at(i,&ui);
  528. if (1==ui.m_status)
  529. {
  530. bShow=true;
  531. //flag=1 means refresh usertable , 0 means not
  532. if ((m_option.m_bSysAutoPoll) && (1==flag))
  533. {
  534. /* if type of update time is ulong then use */
  535. /* the following code                       */
  536. t_now=time(NULL);
  537. t_update=*((time_t *)ui.m_update_time);
  538. if ((t_now-t_update)>=m_option.m_iOffLineTime)
  539. {
  540. do_close_one_user((unsigned char *)ui.m_userid,NULL);
  541. bShow=false;
  542. }                
  543. /* if type of update time is char * then use */
  544. /* following code                            */
  545. /*
  546. if (this->CompareDateTimeAndNow(ui.m_update_time)>=m_option.m_iOffLineTime)
  547. {
  548. do_close_one_user((unsigned char *)ui.m_userid,NULL);
  549. bShow=false;
  550. }
  551. */
  552. }
  553. if (bShow)
  554. {
  555. //add to ListView of right top
  556. this->GetRightPane()->InsertUserItem(
  557. ui.m_userid,ui.m_logon_date,
  558. ui.m_update_time,ui.m_local_addr,
  559. ui.m_local_port,ui.m_sin_addr,ui.m_sin_port);
  560. //add to TreeView of left
  561. this->GetLeftPane()->InsertUserItem(ui.m_userid);
  562. }
  563. }
  564. }
  565. this->GetLeftPane()->GetTreeCtrl().Expand(
  566. this->GetLeftPane()->GetTreeCtrl().GetFirstVisibleItem(),TVE_EXPAND);
  567. }
  568. void CMainFrame::OnMianswer() 
  569. {
  570.     m_bAnswer=!m_bAnswer;
  571. }
  572. void CMainFrame::OnMiserversetting() 
  573. {
  574. this->GetPara(0);
  575. }
  576. void CMainFrame::OnMishowdata() 
  577. {
  578. this->GetPara(1);
  579. }
  580. void CMainFrame::OnShowmenu() 
  581. {
  582.     ShowControlBar(&m_wndMenuBar,!m_wndMenuBar.IsWindowVisible(),FALSE);
  583. m_wndToolBar.SetButtonStyle(6,TBSTYLE_BUTTON);
  584. }
  585. void CMainFrame::OnHelpcontent() 
  586. {
  587. MessageBox("深圳市宏电技术开发有限公司");
  588. }
  589. void CMainFrame::SetStatusBarStyle()
  590. {
  591. m_wndStatusBar.SetPaneInfo(0,ID_SEPARATOR,SBPS_STRETCH,100);  
  592. m_wndStatusBar.SetPaneText(1,"",TRUE);
  593. //m_wndStatusBar.SetPaneText(2,"GPRS VC DEMO 3.0   宏电技术",TRUE);
  594. m_wndStatusBar.SetPaneText(2,"DSC API演示程序 2.1 版(VC++6.0)",TRUE);
  595. }
  596. void CMainFrame::OnTimer(UINT nIDEvent) 
  597. {
  598. // TODO: Add your message handler code here and/or call default
  599. if (1==nIDEvent)
  600. this->RefreshUserTable(1);
  601. CFrameWnd::OnTimer(nIDEvent);
  602. }
  603. void CMainFrame::PrintData(char *szData, int datalen)
  604. {
  605. char buf[128];
  606. int i,j,len,totallen;
  607. totallen=datalen;//strlen(szData);  原来的错误
  608. for (i=0;i<totallen;i+=16)
  609. {
  610. len=(totallen-i)>16?16:(totallen-i);
  611. sprintf(buf,"%04X  :  ",i);
  612. for (j=0;j<len;j++)
  613. {
  614. sprintf(buf+9+j*3,"%02X ",szData[i+j]&0xFF);
  615. buf[64+j]=szData[i+j];
  616. }
  617.         memset(buf+len*3+9,' ',64-len*3-9);
  618. buf[64+len]='';
  619. this->AddTextToEditView(buf);
  620. }
  621. }
  622. void CMainFrame::OnUpdateMistartservice(CCmdUI* pCmdUI) 
  623. {
  624. // TODO: Add your command update UI handler code here
  625. pCmdUI->Enable(!m_bServerRunning);
  626. }
  627. void CMainFrame::OnUpdateMistopservice(CCmdUI* pCmdUI) 
  628. {
  629. // TODO: Add your command update UI handler code here
  630. pCmdUI->Enable(m_bServerRunning);
  631. }
  632. void CMainFrame::OnUpdateMianswer(CCmdUI* pCmdUI) 
  633. {
  634. // TODO: Add your command update UI handler code here
  635. pCmdUI->SetCheck(m_bAnswer);
  636. }
  637. void CMainFrame::init_option(LPOPTION pOption)
  638. {
  639. pOption->m_bSaveToLog=FALSE;
  640. pOption->m_iLogItemCount=200;
  641. pOption->m_bShowDataHead=TRUE;
  642. pOption->m_iServerPort=30243;
  643. pOption->m_bSysAutoPoll=TRUE;
  644. pOption->m_iPollTimeInterval=30;
  645. pOption->m_iOffLineTime=120;
  646. pOption->m_bShowHead=TRUE;
  647. pOption->m_bHexShow=TRUE;
  648. }
  649. void CMainFrame::GetPara(int tabindex)
  650. {
  651. CSettingDlg sdlg(NULL,tabindex,!m_bServerRunning);
  652. sdlg.m_bSaveToLog=m_option.m_bSaveToLog;
  653. sdlg.m_iLogItemCount.Format("%d",m_option.m_iLogItemCount);
  654. sdlg.m_iOffLineTime.Format("%d",m_option.m_iOffLineTime);
  655. sdlg.m_iPollTime.Format("%d",m_option.m_iPollTimeInterval);
  656. sdlg.m_iServerPort.Format("%d",m_option.m_iServerPort);
  657. sdlg.m_bSysAutoPoll=m_option.m_bSysAutoPoll;
  658. sdlg.m_bShowHead=m_option.m_bShowHead;
  659. sdlg.m_bHexShow=m_option.m_bHexShow;
  660. if (IDOK==sdlg.DoModal())
  661. {
  662. m_option.m_bSaveToLog=sdlg.m_bSaveToLog;
  663. m_option.m_iLogItemCount=atoi(sdlg.m_iLogItemCount.GetBuffer(0));
  664. m_option.m_iOffLineTime=atoi(sdlg.m_iOffLineTime.GetBuffer(0));
  665. m_option.m_iPollTimeInterval=atoi(sdlg.m_iPollTime.GetBuffer(0));
  666. m_option.m_iServerPort=atoi(sdlg.m_iServerPort.GetBuffer(0));
  667. m_option.m_bSysAutoPoll=sdlg.m_bSysAutoPoll;
  668.     m_option.m_bShowHead=sdlg.m_bShowHead;
  669.     m_option.m_bHexShow=sdlg.m_bHexShow;
  670. }
  671. }
  672. void CMainFrame::SetUserId(char *szUserId)
  673. {
  674. strncpy(this->m_userid,szUserId,11);
  675. this->m_userid[11]='';
  676. }
  677. void CMainFrame::OnUpdateShowmenu(CCmdUI* pCmdUI) 
  678. {
  679.     pCmdUI->SetCheck(m_wndMenuBar.IsWindowVisible());
  680. }
  681. void CMainFrame::OnMiofflineall() 
  682. {
  683.     do_close_all_user(NULL);
  684. this->RefreshUserTable();
  685. }
  686. void CMainFrame::OnMiviewword() 
  687. {
  688. // TODO: Add your command handler code here
  689.     if (!IsWindowVisible()) 
  690. return;
  691. CRect rect; 
  692. m_viewword=!m_viewword;
  693.     m_wndToolBar.SetShowWord(m_viewword);
  694.     m_wndToolBar.GetItemRect(0,&rect); 
  695. if (m_viewword)
  696. {
  697.     m_wndToolBar.SetSizes(CSize(SHOWTEXTLEN,rect.Size().cy),CSize(32,32));
  698. }
  699. else
  700. {
  701.         m_wndToolBar.SetSizes(CSize(NOTEXTLEN,rect.Size().cy),CSize(32,32));
  702. }
  703. ShowControlBar(&m_wndToolBar,TRUE,FALSE);
  704. }
  705. void CMainFrame::OnUpdateMiviewword(CCmdUI* pCmdUI) 
  706. {
  707. pCmdUI->Enable(m_wndToolBar.IsWindowVisible());
  708.     pCmdUI->SetCheck(m_viewword);
  709. }
  710. BOOL CMainFrame::IsShowToolBarWord()
  711. {
  712. return m_viewword;
  713. }
  714. int CMainFrame::CompareDateTimeAndNow(char * szDateTime)
  715. {
  716.     int nYear,nMonth,nDay,nHour,nMin,nSec;
  717. char temp[20];
  718.     memset(temp,0,20);
  719. strncpy(temp,szDateTime,4);
  720. nYear = atoi(temp);
  721. memset(temp,0,20);
  722. strncpy(temp,&(szDateTime[5]),2);
  723. nMonth = atoi(temp);
  724. memset(temp,0,20);
  725. strncpy(temp,&(szDateTime[8]),2);
  726. nDay = atoi(temp);
  727. memset(temp,0,20);
  728. strncpy(temp,&(szDateTime[11]),2);
  729. nHour = atoi(temp);
  730. memset(temp,0,20);
  731. strncpy(temp,&(szDateTime[14]),2);
  732. nMin = atoi(temp);
  733. memset(temp,0,20);
  734. strncpy(temp,&(szDateTime[17]),4);
  735. nSec = atoi(temp);
  736. CTime updatetime(nYear,nMonth,nDay,nHour,nMin,nSec);
  737. time_t stUpdatetime = updatetime.GetTime();
  738. CTime currenttime = CTime::GetCurrentTime();
  739.     return (currenttime.GetTime()-stUpdatetime);
  740. }
  741. void CMainFrame::AddToSysMenu()
  742. {
  743. CMenu *pMenu;
  744. pMenu=this->GetSystemMenu(FALSE);
  745. ASSERT(pMenu);
  746. pMenu->AppendMenu(MF_SEPARATOR);
  747. //pMenu->AppendMenu(MF_STRING,NEWMENUITEM,"显示工具栏");
  748. pMenu->AppendMenu(MF_STRING,ID_SHOWMENU,"显示/隐藏菜单栏(&U)");
  749. pMenu->AppendMenu(MF_STRING,ID_VIEW_TOOLBAR,"显示/隐藏工具栏(&T)");
  750. }
  751. LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
  752. {
  753. // TODO: Add your specialized code here and/or call the base class
  754.     if (WM_SYSCOMMAND==message)
  755. {
  756. if (ID_VIEW_TOOLBAR==wParam)
  757. {
  758. ShowControlBar(&m_wndToolBar,!m_wndToolBar.IsWindowVisible(),FALSE);
  759. return 0;
  760. }
  761. else if (ID_SHOWMENU==wParam)
  762. {
  763. ShowControlBar(&m_wndMenuBar,!m_wndMenuBar.IsWindowVisible(),FALSE);
  764. return 0;
  765. }
  766. }
  767. return CFrameWnd::WindowProc(message, wParam, lParam);
  768. }
  769. void CMainFrame::OnUserinfoin() 
  770. {
  771. int i;
  772. int nMaxUser;
  773. user_info UserInfo;
  774. FILE *fp;
  775. int  nBytesRead;
  776. fp = fopen("UserInfo.dat", "r");
  777. if (NULL == fp)
  778. {
  779. return;
  780. }
  781. DeleteAllUser();
  782. nMaxUser = get_max_user_amount();
  783. for (i=0; i<nMaxUser; i++)
  784. {
  785. nBytesRead = fread((char *)&UserInfo, 1, sizeof(user_info), fp);
  786. *((time_t *)UserInfo.m_update_time) = time(NULL);
  787. if (nBytesRead < sizeof(user_info))
  788. {
  789. break;
  790. }
  791. AddOneUser(&UserInfo);
  792. }
  793. fclose(fp);
  794. RefreshUserTable(0);
  795. }
  796. void CMainFrame::OnUserinfoout() 
  797. {
  798. int i;
  799. int nMaxUser;
  800. user_info UserInfo;
  801. FILE *fp;
  802. fp = fopen("UserInfo.dat", "w");
  803. if (NULL == fp)
  804. {
  805. return;
  806. }
  807. nMaxUser = get_max_user_amount();
  808. for (i=0; i<nMaxUser; i++)
  809. {
  810. get_user_at(i, &UserInfo);
  811. if (1 == UserInfo.m_status)
  812. {
  813. fwrite((char *)&UserInfo, 1, sizeof(user_info), fp);
  814. }
  815. }
  816. fclose(fp);
  817. }
  818. void CMainFrame::OnMenusmsstart() 
  819. {
  820. // TODO: Add your command handler code here
  821. //需要配置波特率、数据位、停止位、校验码,其余不需配置;
  822. /*Test SMM call 
  823.  *Add by sea on sep 16,2003"*/
  824. int iResult = 0;
  825. DCB dcb;
  826. dcb.BaudRate = 115200;
  827. dcb.ByteSize = 8;
  828. dcb.StopBits = 0;//ONESTOPBITS;
  829. dcb.Parity = 0 ;
  830.     iResult = SMMInit("202.96.134.133",5001,
  831.  "COM5", &dcb,
  832.  "13800755500","13510006407",1);
  833. if(iResult<0) 
  834. AddTextToEditView("smm error",false);
  835. SMMSetting("10.0.0.1",5002);
  836. SetModemType(1);
  837. iResult = MakeDTUOnLine(1,"13902944285");
  838. // AfxBeginThread(pfnReadData,this,THREAD_PRIORITY_NORMAL);
  839. }
  840. void CMainFrame::OnMenusmsexit() 
  841. {
  842. // TODO: Add your command handler code here
  843. // g_nCount = 200;
  844. SMMFree();
  845. }
  846. void CMainFrame::OnAdduser() 
  847. {
  848. // TODO: Add your command handler code here
  849. if(!m_IsAdduserDlg)
  850. {
  851. m_IsAdduserDlg=TRUE;
  852.     CAddUserDlg * adduserdlg=new CAddUserDlg;
  853.     adduserdlg->Create (IDD_AddUser,this);
  854.     adduserdlg->ShowWindow (SW_SHOW);
  855. }
  856.     return;
  857. }
  858. void CMainFrame::OnDeleteUser() 
  859. {
  860. // TODO: Add your command handler code here
  861. if (11==strlen(m_userid))
  862. {
  863. delete_one_user((unsigned char *)m_userid,NULL);
  864. this->RefreshUserTable();
  865. }
  866. }
  867. void CMainFrame::OnUpdateAdduser(CCmdUI* pCmdUI) 
  868. {
  869. // TODO: Add your command update UI handler code here
  870. pCmdUI->Enable(m_bServerRunning);
  871. }
  872. void CMainFrame::OnUpdateDeleteUser(CCmdUI* pCmdUI) 
  873. {
  874. // TODO: Add your command update UI handler code here
  875. pCmdUI->Enable(m_bServerRunning);
  876. }
  877. void CMainFrame::OnUpdateUserinfoin(CCmdUI* pCmdUI) 
  878. {
  879. // TODO: Add your command update UI handler code here
  880. pCmdUI->Enable(m_bServerRunning);
  881. }
  882. void CMainFrame::OnUpdateUserinfoout(CCmdUI* pCmdUI) 
  883. {
  884. // TODO: Add your command update UI handler code here
  885. pCmdUI->Enable(m_bServerRunning);
  886. }
  887. void CMainFrame::OnDisconnectPpp() 
  888. {
  889. // TODO: Add your command handler code here
  890. if (11==strlen(m_userid))
  891. {
  892. do_disconnect_ppp_link((unsigned char *)m_userid,NULL);
  893. }
  894. }
  895. void CMainFrame::OnUpdateDisconnectPpp(CCmdUI* pCmdUI) 
  896. {
  897. // TODO: Add your command update UI handler code here
  898. pCmdUI->Enable(m_bServerRunning);
  899. }
  900. void CMainFrame::OnStopToSend() 
  901. {
  902. // TODO: Add your command handler code here
  903. if (11==strlen(m_userid))
  904. {
  905. do_stop_send_data((unsigned char *)m_userid,NULL);
  906. }
  907. }
  908. void CMainFrame::OnUpdateStopToSend(CCmdUI* pCmdUI) 
  909. {
  910. // TODO: Add your command update UI handler code here
  911. pCmdUI->Enable(m_bServerRunning);
  912. }
  913. void CMainFrame::OnStartToSend() 
  914. {
  915. // TODO: Add your command handler code here
  916. if (11==strlen(m_userid))
  917. {
  918. do_start_send_data((unsigned char *)m_userid,NULL);
  919. }
  920. }
  921. void CMainFrame::OnUpdateStartToSend(CCmdUI* pCmdUI) 
  922. {
  923. // TODO: Add your command update UI handler code here
  924. pCmdUI->Enable(m_bServerRunning);
  925. }
  926. void CMainFrame::OnDiscardData() 
  927. {
  928. // TODO: Add your command handler code here
  929. if (11==strlen(m_userid))
  930. {
  931. do_flush_cache_data((unsigned char *)m_userid,NULL);
  932. }
  933. }
  934. void CMainFrame::OnUpdateDiscardData(CCmdUI* pCmdUI) 
  935. {
  936. // TODO: Add your command update UI handler code here
  937. pCmdUI->Enable(m_bServerRunning);
  938. }