NetMapView.cpp
上传用户:hbytqc8
上传日期:2014-07-31
资源大小:527k
文件大小:5k
源码类别:

SNMP编程

开发平台:

Visual C++

  1. // NetMapView.cpp : implementation of the CNetMapView class
  2. //
  3. #include "stdafx.h"
  4. #include "NetMap.h"
  5. #include "MainFrm.h"
  6. #include "NetMapDoc.h"
  7. #include "NetMapView.h"
  8. #include "MainFrm.h"
  9. #include "MapView.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CNetMapView
  17. IMPLEMENT_DYNCREATE(CNetMapView, CFormView)
  18. BEGIN_MESSAGE_MAP(CNetMapView, CFormView)
  19. //{{AFX_MSG_MAP(CNetMapView)
  20. ON_WM_DESTROY()
  21. ON_WM_CTLCOLOR()
  22. ON_WM_PAINT()
  23. //}}AFX_MSG_MAP
  24. // Standard printing commands
  25. ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
  26. ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
  27. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
  28. END_MESSAGE_MAP()
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CNetMapView construction/destruction
  31. CNetMapView::CNetMapView()
  32. : CFormView(CNetMapView::IDD)
  33. {
  34. //{{AFX_DATA_INIT(CNetMapView)
  35. // NOTE: the ClassWizard will add member initialization here
  36. //}}AFX_DATA_INIT
  37. // TODO: add construction code here
  38. paint=false;
  39. }
  40. CNetMapView::~CNetMapView()
  41. {
  42. }
  43. void CNetMapView::DoDataExchange(CDataExchange* pDX)
  44. {
  45. CFormView::DoDataExchange(pDX);
  46. //{{AFX_DATA_MAP(CNetMapView)
  47. // NOTE: the ClassWizard will add DDX and DDV calls here
  48. //}}AFX_DATA_MAP
  49. }
  50. BOOL CNetMapView::PreCreateWindow(CREATESTRUCT& cs)
  51. {
  52. // TODO: Modify the Window class or styles here by modifying
  53. //  the CREATESTRUCT cs
  54. return CFormView::PreCreateWindow(cs);
  55. }
  56. void CNetMapView::OnInitialUpdate()
  57. {
  58. CFormView::OnInitialUpdate();
  59. GetParentFrame()->RecalcLayout();
  60. ResizeParentToFit();
  61.     CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
  62. pMain->pNetMapView=this;
  63. }
  64. /////////////////////////////////////////////////////////////////////////////
  65. // CNetMapView printing
  66. BOOL CNetMapView::OnPreparePrinting(CPrintInfo* pInfo)
  67. {
  68. // default preparation
  69. return DoPreparePrinting(pInfo);
  70. }
  71. void CNetMapView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  72. {
  73. // TODO: add extra initialization before printing
  74. }
  75. void CNetMapView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  76. {
  77. // TODO: add cleanup after printing
  78. }
  79. void CNetMapView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
  80. {
  81. // TODO: add customized printing code here
  82. }
  83. /////////////////////////////////////////////////////////////////////////////
  84. // CNetMapView diagnostics
  85. #ifdef _DEBUG
  86. void CNetMapView::AssertValid() const
  87. {
  88. CFormView::AssertValid();
  89. }
  90. void CNetMapView::Dump(CDumpContext& dc) const
  91. {
  92. CFormView::Dump(dc);
  93. }
  94. CNetMapDoc* CNetMapView::GetDocument() // non-debug version is inline
  95. {
  96. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CNetMapDoc)));
  97. return (CNetMapDoc*)m_pDocument;
  98. }
  99. #endif //_DEBUG
  100. /////////////////////////////////////////////////////////////////////////////
  101. // CNetMapView message handlers
  102. void CNetMapView::OnDestroy() 
  103. {
  104. CFormView::OnDestroy();
  105.  
  106. }
  107. HBRUSH CNetMapView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
  108. {
  109. HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
  110.  
  111. return hbr;
  112. }
  113. void CNetMapView::OnPaint() 
  114. {
  115. CPaintDC dc(this); // device context for painting
  116. if (paint==true)
  117.     {
  118.     CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
  119.     CMainFrame::NodeData *p1;
  120.     CMainFrame::NodeData *p2;
  121.     CMapView *pList=pMain->pListView;
  122. CWnd *pWnd;
  123. CRect rc;
  124.     for (int i=0;i<pMain->NodeArray.GetSize();i++)
  125. {   
  126.   p1=(CMainFrame::NodeData *)(pList->m_map.GetItemData(pMain->NodeArray[i]));
  127.   pWnd=GetDlgItem(IDC_MYIMAGE+i);
  128.       pWnd->GetWindowRect(rc);
  129.   ScreenToClient(rc);
  130.   p1->pImage->MyPos.x=rc.left+20;
  131.       p1->pImage->MyPos.y=rc.top+10;
  132. }
  133. for (i=0;i<pMain->NodeArray.GetSize();i++)
  134. {
  135. p1=(CMainFrame::NodeData *)(pList->m_map.GetItemData(pMain->NodeArray[i]));
  136. dc.TextOut(p1->pImage->MyPos.x+40,p1->pImage->MyPos.y,p1->ip);
  137. if (p1->m_neighbor.GetSize()>0) 
  138. {
  139. for (int j=0;j<p1->m_neighbor.GetSize();j++)
  140. {
  141. p2=(CMainFrame::NodeData *)(pList->m_map.GetItemData(p1->m_neighbor[j].Id));
  142.   
  143. if ((p1->level)==(p2->level))
  144. //对端节点和本节点横向位置相同;
  145. {
  146.   dc.MoveTo(p1->pImage->MyPos.x,p1->pImage->MyPos.y+j*4);
  147.   dc.LineTo(p2->pImage->MyPos.x,p2->pImage->MyPos.y+j*4);
  148. }
  149. else
  150.                 {
  151. dc.MoveTo(p1->pImage->MyPos.x+j*4,p1->pImage->MyPos.y);
  152.      dc.LineTo(p2->pImage->MyPos.x+j*4,p2->pImage->MyPos.y);
  153. }
  154. }
  155. }
  156. }
  157. }
  158. }
  159. // Do not call CFormView::OnPaint() for painting messages