| int m_BufLen; //数据长度 unsigned char* buffer; //数据缓存 int m_dx; //数据偏移量 int m_DY; //数据显示区的幅度 CPoint* value; //将要显示的数值 int m_DX; //数据显示区的宽度 int m_Y0; //数据显示区参照点位置 CRect rect; //数据显示区矩形 |
| void CWaveShowerView::GetScreenRect() { CWnd* pStatic = GetDlgItem(IDC_SCREEN); pStatic->GetWindowRect(&rect); ScreenToClient(&rect); rect.top =4; rect.left =4; rect.bottom-=4; rect.right-=4; m_Y0=(rect.bottom-rect.top)/2 rect.top; m_DX=rect.Width(); m_DY=rect.Height()/2; value=new CPoint[m_DX]; } void CWaveShowerView::CleanScreen() { CDC* pDC=GetDC(); CPen pen1(PS_SOLID,1,RGB(0,0,0)); CPen* oldPen1=pDC->SelectObject(&pen1); for(int i=rect.top;i<rect.bottom;i ) { pDC->MoveTo(rect.left,i); pDC->LineTo(rect.right,i); } pDC->SelectObject(&oldPen1); CPen pen2(PS_SOLID,1,RGB(0,0,255)); CPen* oldPen2=pDC->SelectObject(&pen2); pDC->MoveTo(rect.left,m_Y0); pDC->LineTo(rect.right,m_Y0); pDC->SelectObject(&oldPen2); ReleaseDC(pDC); } void CWaveShowerView::DrawPoint(CPoint pt, COLORREF color) { CDC* pDC=GetDC(); pDC->SetPixel(rect.left pt.x,m_Y0-pt.y,color); ReleaseDC(pDC); } |
| void CWaveShowerView::OnInitialUpdate() { CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); GetScreenRect(); for(int i=0;i<m_DX;i ) value[i].x=value[i].y=0; SetTimer(0,10,NULL); } void CWaveShowerView::OnOpenData() { CString FileName=""; CFile file; CFileDialog dlg(TRUE,"*","*.*", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"所有文件(*.*)|*.*||",NULL); if(dlg.DoModal()==IDOK) { KillTimer(1); FileName=dlg.GetPathName(); file.Open(FileName,CFile::modeReadWrite); m_BufLen=file.GetLength(); buffer= new unsigned char[m_BufLen m_DX 10]; file.Read(buffer,m_BufLen); file.Close(); SetTimer(1,10,NULL); } } |
评论加载中…
![]() |