AnalogMeterTestView.cpp
上传用户:haifei
上传日期:2022-07-20
资源大小:77k
文件大小:9k
- // AnalogMeterTestView.cpp : implementation of the CAnalogMeterTestView class
- // Download by http://www.codefans.net
- #include "stdafx.h"
- #include <math.h>
- #include "AnalogMeterTest.h"
- #include "InputString.h"
- #include "AnalogMeterTestDoc.h"
- #include "AnalogMeterTestView.h"
- #include "ComputerName.h" // Name Dlg
- #include "Thread.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CAnalogMeterTestView
- IMPLEMENT_DYNCREATE(CAnalogMeterTestView, CView)
- BEGIN_MESSAGE_MAP(CAnalogMeterTestView, CView)
- //{{AFX_MSG_MAP(CAnalogMeterTestView)
- ON_COMMAND(ID_TIMER_STARTSTOP, OnTimerStartstop)
- ON_WM_TIMER()
- ON_UPDATE_COMMAND_UI(ID_TIMER_STARTSTOP, OnUpdateTimerStartstop)
- ON_COMMAND(ID_METER1, OnMeter1)
- ON_COMMAND(ID_METER2, OnMeter2)
- //}}AFX_MSG_MAP
- // Standard printing commands
- ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CAnalogMeterTestView construction/destruction
- CAnalogMeterTestView::CAnalogMeterTestView()
- {
- // TODO: add construction code here
- for(int i =0;i<4;i++)
- {
- m_lastAngleDeg[i] = 0.0 ;
- m_bChanged[i] = FALSE ;
- }
- m_bTimerRunning = FALSE ;
- m_meterLeft.SetRange (0, 100.0) ;
- m_meterLeft.SetRangeDecimals(1) ;
- m_meterLeft.SetValueDecimals(3) ;
- m_meterLeft.SetTitle("METER 1") ;
- m_meterRight.SetRange (0, 100.0) ;
- m_meterRight.SetRangeDecimals(1) ;
- m_meterRight.SetValueDecimals(3) ;
- m_meterRight.SetTitle("METER 2") ;
- }
- CAnalogMeterTestView::~CAnalogMeterTestView()
- {
- }
- BOOL CAnalogMeterTestView::PreCreateWindow(CREATESTRUCT& cs)
- {
- // TODO: Modify the Window class or styles here by modifying
- // the CREATESTRUCT cs
- return CView::PreCreateWindow(cs);
- }
- /////////////////////////////////////////////////////////////////////////////
- // CAnalogMeterTestView drawing
- void CAnalogMeterTestView::OnDraw(CDC* pDC)
- {
- CAnalogMeterTestDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- CRect rectClient ;
- GetClientRect (&rectClient);
- // make two side-by-side rectangles
- m_rectLeftMeter.left = rectClient.left + rectClient.Width()/10 ;
- m_rectLeftMeter.right =m_rectLeftMeter.left +150; //rectClient.left + rectClient.Width()/2 - 50 ;
- m_rectLeftMeter.top = rectClient.top + rectClient.Height()/10 ;
- m_rectLeftMeter.bottom = rectClient.bottom - rectClient.Height()/10 ;
-
- m_rectRightMeter.left = rectClient.left + rectClient.Width()/2 + 5 ;
- m_rectRightMeter.top = m_rectLeftMeter.top ;
- m_rectRightMeter.right =m_rectRightMeter.left +150; //rectClient.right - rectClient.Width()/10 ;
- m_rectRightMeter.bottom = m_rectLeftMeter.bottom ;
- // force them to be square
- if (m_rectLeftMeter.Height() > m_rectLeftMeter.Width())
- {
- m_rectLeftMeter.bottom = m_rectLeftMeter.top + m_rectLeftMeter.Width() ;
- m_rectRightMeter.bottom = m_rectLeftMeter.bottom ;
- }
- else
- {
- m_rectLeftMeter.left = m_rectLeftMeter.right-m_rectLeftMeter.Height() ;
- m_rectRightMeter.right = m_rectRightMeter.left+m_rectLeftMeter.Height() ;
- }
- m_meterLeft.ShowMeter (pDC, m_rectLeftMeter) ;
- m_meterRight.ShowMeter (pDC, m_rectRightMeter) ;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CAnalogMeterTestView printing
- BOOL CAnalogMeterTestView::OnPreparePrinting(CPrintInfo* pInfo)
- {
- // default preparation
- return DoPreparePrinting(pInfo);
- }
- void CAnalogMeterTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
- {
- // TODO: add extra initialization before printing
- }
- void CAnalogMeterTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
- {
- // TODO: add cleanup after printing
- }
- /////////////////////////////////////////////////////////////////////////////
- // CAnalogMeterTestView diagnostics
- #ifdef _DEBUG
- void CAnalogMeterTestView::AssertValid() const
- {
- CView::AssertValid();
- }
- void CAnalogMeterTestView::Dump(CDumpContext& dc) const
- {
- CView::Dump(dc);
- }
- CAnalogMeterTestDoc* CAnalogMeterTestView::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAnalogMeterTestDoc)));
- return (CAnalogMeterTestDoc*)m_pDocument;
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CAnalogMeterTestView message handlers
- /////////////////////////////////////////////////////////////////////////////
- void CAnalogMeterTestView::OnTimerStartstop()
- {
- // TODO: Add your command handler code here
- if (m_bTimerRunning)
- KillTimer(1) ;
- else
- SetTimer(1, 500, NULL) ;
- m_bTimerRunning ^= TRUE ;
- }
- /////////////////////////////////////////////////////////////////////////////
- void CAnalogMeterTestView::OnTimer(UINT nIDEvent)
- {
- // TODO: Add your message handler code here and/or call default
- double mRad, dValue ;
- CClientDC dcClient(this) ;
-
- //
- // 监视表1
- //
- if(m_bChanged[0])
- {
- m_bChanged[0] = FALSE;
- m_meterLeft.UpdateNeedle (&dcClient, m_lastAngleDeg[0]) ;
- }
- //
- // 监视表2
- //
- if(m_bChanged[1])
- {
- m_bChanged[1] = FALSE;
- m_meterRight.UpdateNeedle (&dcClient, m_lastAngleDeg[1]) ;
- }
- // provided by ClassWizard
- CView::OnTimer(nIDEvent);
- }
- /////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
- void CAnalogMeterTestView::OnUpdateTimerStartstop(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- if (m_bTimerRunning)
- pCmdUI->SetCheck(1) ;
- else
- pCmdUI->SetCheck(0) ;
-
- }
- void CAnalogMeterTestView::OnInitialUpdate()
- {
- CView::OnInitialUpdate();
-
- }
- // choose computer connected to meter1
- void CAnalogMeterTestView::OnMeter1()
- {
- CComputerName Dlg;
- DWORD dwRet;
- Dlg.m_Title = "METER 1";
-
- if(Dlg.DoModal()==IDOK)
- {
-
- Dlg.m_strName = Dlg.m_strName;
- Dlg.m_strName.MakeUpper( );
- NETRESOURCE NetResource;
- NetResource.dwScope = RESOURCE_GLOBALNET;
- NetResource.dwType = RESOURCETYPE_ANY;
- NetResource.dwDisplayType = RESOURCEDISPLAYTYPE_SERVER;
- NetResource.dwUsage = RESOURCEUSAGE_CONTAINER;
- NetResource.lpLocalName =NULL;
- CString temp = "\\"+Dlg.m_strName;
- NetResource.lpRemoteName = temp.GetBuffer(temp.GetLength());
- NetResource.lpProvider = NULL;
- LPCTSTR lpPassword = Dlg.m_Password.GetBuffer(Dlg.m_Password.GetLength());
- LPCTSTR lpUsername = Dlg.m_Connector.GetBuffer(Dlg.m_Connector.GetLength());
- dwRet = WNetAddConnection2(
- &NetResource,
- lpPassword,
- lpUsername,
- 0);
- if(dwRet == NO_ERROR)
- {
- // set meter title
- m_meterLeft.SetTitle(Dlg.m_strName);
- Invalidate(FALSE);
- m_strComputer1 = Dlg.m_strName;
- // start performance data collection thread 1
- AfxBeginThread((AFX_THREADPROC)Meter1_thread,(void *)this);
- }
- else
- {
- switch(dwRet)
- {
- case ERROR_LOGON_FAILURE:
- AfxMessageBox("unknown user name or bad password...");
- break;
- default:
- Dlg.m_strName = "未能成功连接到"+ Dlg.m_strName;
- AfxMessageBox(Dlg.m_strName,IDOK);
- }
- }
- }
- }
- // choose computer connected to meter2
- void CAnalogMeterTestView::OnMeter2()
- {
- CComputerName Dlg;
- DWORD dwRet;
- Dlg.m_Title = "METER 2";
- if(Dlg.DoModal()==IDOK)
- {
- Dlg.m_strName = Dlg.m_strName;
- Dlg.m_strName.MakeUpper( );
- NETRESOURCE NetResource;
- NetResource.dwScope = RESOURCE_GLOBALNET;
- NetResource.dwType = RESOURCETYPE_ANY;
- NetResource.dwDisplayType = RESOURCEDISPLAYTYPE_SERVER;
- NetResource.dwUsage = RESOURCEUSAGE_CONTAINER;
- NetResource.lpLocalName =NULL;
- CString temp = "\\"+Dlg.m_strName;
- NetResource.lpRemoteName = temp.GetBuffer(temp.GetLength());
- NetResource.lpProvider = NULL;
- LPCTSTR lpPassword = Dlg.m_Password.GetBuffer(Dlg.m_Password.GetLength());
- LPCTSTR lpUsername = Dlg.m_Connector.GetBuffer(Dlg.m_Connector.GetLength());
- dwRet = WNetAddConnection2(
- &NetResource,
- lpPassword,
- lpUsername,
- 0);
- if(dwRet == NO_ERROR)
- {
- // set meter title
- m_meterRight.SetTitle(Dlg.m_strName);
- Invalidate(FALSE);
- m_strComputer2 = Dlg.m_strName;
- // start performance data collection thread 2
- AfxBeginThread((AFX_THREADPROC)Meter2_thread,(void *)this);
- }
- else
- {
- switch(dwRet)
- {
- case ERROR_LOGON_FAILURE:
- AfxMessageBox("unknown user name or bad password...");
- break;
- default:
- Dlg.m_strName = "未能成功连接到"+ Dlg.m_strName;
- AfxMessageBox(Dlg.m_strName,IDOK);
- }
- }
- }
- }