⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 childfrm.cpp

📁 一个多线程的网络数据采集系统(客户端)
💻 CPP
字号:
// ChildFrm.cpp : CChildFrame 类的实现
//
#include "stdafx.h"
#include "WspProcess.h"

#include "ChildFrm.h"
#include "EachItemDoc.h"
#include "CurveView.h"
#include "SuperView.h"
#include "SelectCurveDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CChildFrame

IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)

BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
	ON_WM_TIMER()
//	ON_COMMAND(ID_START, OnStart)
//	ON_UPDATE_COMMAND_UI(ID_START, OnUpdateStartUI)
//	ON_COMMAND(ID_STOP, OnStop)
//	ON_UPDATE_COMMAND_UI(ID_STOP, OnUpdateStopUI)
	ON_COMMAND(ID_EDITSPLINECURVE, OnEditSplineCurve)
	ON_UPDATE_COMMAND_UI(ID_EDITSPLINECURVE, OnUpdateEditSplineCurveUI)
	ON_COMMAND(ID_XAXIS, OnXAdjust)
	ON_UPDATE_COMMAND_UI(ID_XAXIS, OnUpdateXAdjustUI)
	ON_COMMAND(ID_YAXIS, OnYAdjust)
	ON_UPDATE_COMMAND_UI(ID_YAXIS, OnUpdateXAdjustUI)
	ON_COMMAND(ID_SKETCH, OnSketch)
	ON_UPDATE_COMMAND_UI(ID_SKETCH, OnUpdateSketchUI)
	ON_WM_CREATE()	
END_MESSAGE_MAP()


// CChildFrame 构造/销毁

CChildFrame::CChildFrame()
{
	// TODO:在此添加成员初始化代码
}

CChildFrame::~CChildFrame()
{
}


BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
	if( !CMDIChildWnd::PreCreateWindow(cs) )
		return FALSE;

	return TRUE;
}


// CChildFrame 诊断

#ifdef _DEBUG
void CChildFrame::AssertValid() const
{
	CMDIChildWnd::AssertValid();
}

void CChildFrame::Dump(CDumpContext& dc) const
{
	CMDIChildWnd::Dump(dc);
}

#endif //_DEBUG


// CChildFrame 消息处理程序

BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
	CRect rect;
	GetClientRect(&rect);
	CSize size  = rect.Size();
	size.cy = size.cy * 2 / 3;
	if (! m_wndSplitter.CreateStatic(this, 2, 1) || 
        ! m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CCurveView), size, pContext) || 
        ! m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CSuperView), size, pContext))
		return FALSE;
   	m_wndSplitter.SetActivePane(0, 0);
	return TRUE;	
}

void CChildFrame::OnTimer(UINT nIDEvent)
{
/*	if (nIDEvent == 1)
	{
		srand((unsigned)time( NULL ));
		int t1 = 50 + rand() % 37;
		static int t2 = 0;
		t2 = (t2 + 5) % 360;
		double theta = PiV * t2 / ConstV;
		SPLINEDATA tempData = {(double)((t1 + 111 * (int)(sin(theta))) % 100 )};
		((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->receive((t1 % 2), tempData);
	}*/
	CMDIChildWnd::OnTimer(nIDEvent);
}
/*
void CChildFrame::OnStart()
{
	CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pGraph->RestoreRealDraw();
    SetTimer(1, 200, NULL);
}

void CChildFrame::OnUpdateStartUI(CCmdUI* pCmdUI)
{
	CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pCmdUI->Enable(! pGraph->m_bRealTime);
}

void CChildFrame::OnStop()
{
	KillTimer(1);
	CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pGraph->EndRealDraw();
	CScrollBar *pXScrollBar = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->m_xScrollBar);
	CScrollBar *pYScrollBar = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->m_yScrollBar);
	int nMin, nMax;
	nMin = pGraph->m_nXTicks;
	nMax = pGraph->m_nPage * pGraph->m_nXTicks + pGraph->m_nTick;
	if(nMax > nMin)
	{
        pXScrollBar->SetScrollRange(nMin, nMax);
		pXScrollBar->SetScrollPos(nMax);
	}
	else
	{
		pXScrollBar->EnableWindow(FALSE);
	}
	pYScrollBar->EnableWindow(TRUE);
}

void CChildFrame::OnUpdateStopUI(CCmdUI* pCmdUI)
{
	CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pCmdUI->Enable( pGraph->m_bRealTime);
}
*/
void CChildFrame::OnEditSplineCurve()
{
	CCurveView *pCurveView = (CCurveView*)m_wndSplitter.GetPane(0, 0);
		CRealTime *pGraph = &(pCurveView->GetDocument()->m_graph);
	CSelectCurveDlg dlg;
	dlg.m_nCurve = pGraph->GetEditCurve() + 1;
	dlg.pGraph = pGraph;
	if(dlg.DoModal() == IDOK)
        pGraph->SetEditCurve(dlg.m_nCurve - 1);
	CClientDC dc(pCurveView);
	pGraph->RefreshGraph(&dc);
//		pGraph->m_redrawFlag = false;
}

void CChildFrame::OnUpdateEditSplineCurveUI(CCmdUI* pCmdUI)
{
    CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pCmdUI->Enable(! (pGraph->m_bRealTime || pGraph->IsNull()));
}

void CChildFrame::OnXAdjust()
{
	CString str;
	str = m_wndToolBar.GetXSelection();
//	double dXScale = atof(str);
	double dXScale;
	if(! sscanf(str, "%lf", &dXScale))
		return;
	if(dXScale >= 0.001)
	{
		if((int)dXScale == dXScale)
			str.Format("%d", (int)dXScale);
		else
            str.Format("%.3lf", dXScale);
		m_wndToolBar.SetXSelection(str);
		CCurveView *pCurveView = (CCurveView*)m_wndSplitter.GetPane(0, 0);
		CRealTime *pGraph = &(pCurveView->GetDocument()->m_graph);
		dXScale = (int)(dXScale / 0.001) * 0.001;
		int nMin, nMax, nPos;
		pCurveView->m_xScrollBar.GetScrollRange(&nMin, &nMax);
		pGraph->AdjustXSetting(dXScale, nMax, nPos);
        CRect rect;
		CClientDC dc(pCurveView);
		pCurveView->GetClientRect(rect);
		pGraph->DoPrepare(&dc,rect);
		pGraph->RefreshGraph(&dc);
		pGraph->m_redrawFlag = false;
		pCurveView->m_xScrollBar.SetScrollRange(nMin, nMax);
		pCurveView->m_xScrollBar.SetScrollPos(nPos);
		if(nMax == nMin)pCurveView->m_xScrollBar.EnableWindow(FALSE);
	}
}

void CChildFrame::OnUpdateXAdjustUI(CCmdUI* pCmdUI)
{
	CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pCmdUI->Enable(! pGraph->m_bRealTime);
}

void CChildFrame::OnYAdjust()
{
	CString str;
	str = m_wndToolBar.GetYSelection();
//	double dYScale = atof(str);
	double dYScale;
	if(! sscanf(str, "%lf", &dYScale))
		return;
	if(dYScale >= 0.01)
	{
		if((int)dYScale == dYScale)
			str.Format("%d", (int)dYScale);
		else
            str.Format("%.2lf", dYScale);
		m_wndToolBar.SetYSelection(str);
		CCurveView *pCurveView = (CCurveView*)m_wndSplitter.GetPane(0, 0);
		CRealTime *pGraph = &(pCurveView->GetDocument()->m_graph);
		pGraph->AdjustYSetting(dYScale);
        CRect rect;
		CClientDC dc(pCurveView);
		pCurveView->GetClientRect(rect);
		pGraph->DoPrepare(&dc,rect);
		pGraph->RefreshGraph(&dc);
		pGraph->m_redrawFlag = false;
		int nPages = pGraph->m_nYPages;
		int nPan = pGraph->m_nYTicks;
		pCurveView->m_yScrollBar.SetScrollPos(nPan * (nPages - nPages / 2));
	}
}

void CChildFrame::OnUpdateYAdjustUI(CCmdUI* pCmdUI)
{
	CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pCmdUI->Enable(! pGraph->m_bRealTime );
}

void CChildFrame::OnSketch()
{
    CCurveView *pCurveView = (CCurveView*)m_wndSplitter.GetPane(0, 0);
	CRealTime *pGraph = &(pCurveView->GetDocument()->m_graph);
	if(! pGraph->IsNull())
	{
        double XUnits, YUnits;
		pGraph->PrepareSketch(XUnits, YUnits);
        CRect rect;
		CClientDC dc(pCurveView);
		pCurveView->GetClientRect(rect);
		pGraph->DoPrepare(&dc,rect);
		pGraph->RefreshGraph(&dc);
		pGraph->m_redrawFlag = false;
		pCurveView->m_xScrollBar.SetScrollRange(pGraph->m_nXTicks, pGraph->m_nXTicks);
		pCurveView->m_xScrollBar.SetScrollPos(pGraph->m_nXTicks);
		int nPages = pGraph->m_nYPages;
		int nPan = pGraph->m_nYTicks;
		pCurveView->m_yScrollBar.SetScrollPos(nPan * (nPages - nPages / 2));
        pCurveView->m_xScrollBar.EnableWindow(FALSE);
		pCurveView->m_yScrollBar.EnableWindow(FALSE);
		CString str;
		str.Format("%0.2f", XUnits);
		m_wndToolBar.SetXSelection(str);
		str.Format("%0.2f", YUnits);
		m_wndToolBar.SetYSelection(str);
	}
}

void CChildFrame::OnUpdateSketchUI(CCmdUI* pCmdUI)
{
	CRealTime *pGraph = &(((CCurveView*)m_wndSplitter.GetPane(0, 0))->GetDocument()->m_graph);
	pCmdUI->Enable(!(pGraph->m_bRealTime || pGraph->IsNull()));
}

int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBarEx(IDR_CURVEGRAPH))
	{
		TRACE0("未能创建工具栏\n");
		return -1;      // 未能创建
	}	
	
	// TODO: 如果不需要工具栏可停靠,则删除这三行
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -