亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? historyform.cpp

?? 一個(gè)串口通信的程序
?? CPP
字號(hào):
// HistoryForm.cpp : implementation file
//

#include "stdafx.h"
#include "datasvr.h"
#include "HistoryForm.h"
#include "glovar.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHistoryForm

IMPLEMENT_DYNCREATE(CHistoryForm, TVisualFormView)

CHistoryForm::CHistoryForm()
	: TVisualFormView(CHistoryForm::IDD)
{
	//{{AFX_DATA_INIT(CHistoryForm)
	m_dt1 = COleDateTime::GetCurrentTime();
	m_dt2 = COleDateTime::GetCurrentTime();
	//}}AFX_DATA_INIT
	data=NULL;
	pic_valid=false;
	data_valid=false;
	DCMEM.m_hDC=NULL;
	m_pDC=NULL;
	count=0;
}
	static int oldx=-1;
	static int oldtextx=-1;
	static CString oldstr;

CHistoryForm::~CHistoryForm()
{
}

void CHistoryForm::DoDataExchange(CDataExchange* pDX)
{
	TVisualFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CHistoryForm)
	DDX_Control(pDX, IDC_CBX_RT, m_ctlRT);
	DDX_Control(pDX, IDC_DATETIMEPICKER2, m_ctldt2);
	DDX_Control(pDX, IDC_DATETIMEPICKER1, m_ctldt1);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_dt1);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_dt2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CHistoryForm, TVisualFormView)
	//{{AFX_MSG_MAP(CHistoryForm)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_CBN_SELENDOK(IDC_CBX_RT, OnSelendokCbxRt)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER1, OnDatetimechangeDatetimepicker1)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER2, OnDatetimechangeDatetimepicker2)
	ON_WM_SIZE()
	ON_WM_MOUSEMOVE()
	ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHistoryForm diagnostics

#ifdef _DEBUG
void CHistoryForm::AssertValid() const
{
	TVisualFormView::AssertValid();
}

void CHistoryForm::Dump(CDumpContext& dc) const
{
	TVisualFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CHistoryForm message handlers

int CHistoryForm::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (TVisualFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	m_pDC=new CClientDC(this);
	wz.CreatePen(PS_SOLID, 1, RGB(0,0,255));
	m_pDC->SelectObject(&wz);
	m_pDC->SetROP2(R2_XORPEN);
	m_pDC->SetTextColor(RGB(255,255,0));
	m_pDC->SetBkMode( TRANSPARENT );

	Font1.CreatePointFont(8*10,"Arial");
	Font2.CreateFont(
	   12,                        // nHeight
	   0,                         // nWidth
	   0,                         // nEscapement
	   0,                         // nOrientation
	   FW_NORMAL,                 // nWeight
	   FALSE,                     // bItalic
	   FALSE,                     // bUnderline
	   0,                         // cStrikeOut
	   GB2312_CHARSET,	          // nCharSet
	   OUT_DEFAULT_PRECIS,        // nOutPrecision
	   CLIP_DEFAULT_PRECIS,       // nClipPrecision
	   DEFAULT_QUALITY,           // nQuality
	   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
	   "Arial");                 
	LOGBRUSH lb;
	lb.lbStyle = BS_SOLID;
	lb.lbColor = RGB(255,0,0);
	
	LineBrush.CreateBrushIndirect(&lb);

	NewPen.CreatePen(PS_SOLID, 1, RGB(0,255,0));   
	RedPen.CreatePen(PS_DASH , 1, RGB(255,0,0));   
	
	
	return 0;
}

void CHistoryForm::OnDestroy() 
{
	if(data!=NULL)delete data;
	delete m_pDC;
	TVisualFormView::OnDestroy();
}

void CHistoryForm::OnDraw(CDC* pDC) 
{
	static bool processin=false;
	if(!processin)
	{
		processin=true;
		CRect clientrect;
		this->GetClientRect(&clientrect);
		if(pic_valid==false)
		{
			bool result;
			if(DCMEM.m_hDC!=NULL)
			{
				DCMEM.SelectObject(m_pbmpOldDCMEM);
//				DCMEM.Detach();//.DeleteDC();
//				DCMEM.DeleteDC();
//				m_bmpDCMEM.Detach();
				result=m_bmpDCMEM.DeleteObject();
				if(!result)
				{
					::AfxMessageBox("delete object error");
				}
			}
			else
			{
				result = DCMEM.CreateCompatibleDC(pDC);
				if(!result)
				{
					::AfxMessageBox("CreateCompatibleDC error");
				}
			}
			result = m_bmpDCMEM.CreateCompatibleBitmap(pDC,1024,768);
			if(!result)
			{
				::AfxMessageBox("CreateCompatibleBitmap error");
			}
			m_pbmpOldDCMEM=DCMEM.SelectObject(&m_bmpDCMEM);
			if(data_valid)
			{
				pic_valid=DrawMe(data,count,&DCMEM);
			}
		}

		oldx=-1;
		pDC->BitBlt(2, 40,clientrect.Width()-4,clientrect.Height()-40-2, &DCMEM, 0, 0, SRCCOPY);
		processin=false;
	}
}

bool CHistoryForm::DrawMe(HISTORY_DATA *data, int count, CDC *pDC)
{
	if(data==NULL || count==0)return false;

	int rtid;
	int sel;
	sel=m_ctlRT.GetCurSel();
	bool valid=false;
	NPRT nprt;
	if(sel!=CB_ERR)
	{
		rtid=m_ctlRT.GetItemData(sel);
		for(int i=0;i<arrRT.GetSize();i++)
		{
			nprt=arrRT.GetAt(i);
			if(nprt->rtid==rtid)break;
		}
	}
	else return false;

	int viewcount=0;

	CRect rect;
	GetClientRect( &rect );
	int viewh=rect.Height()-40-2;
	int vieww=rect.Width()-4;

	int OldBKMode = pDC->SetBkMode( TRANSPARENT );
	COLORREF OldColor = pDC->SetTextColor(RGB(128,128,128));
	CFont *OldFont=(CFont *)pDC->SelectObject(CFont::FromHandle(Font2));
	CBrush *OldBrush = pDC->SelectObject( &LineBrush);
	CPen *OldPen=pDC->SelectObject(&RedPen);

	float maxvalue=data[0].value,minvalue=data[0].value;
	
	for(int j=0;j<count;j++)
	{
		if(data[j].state==101)
		{
			if(data[j].value>maxvalue)maxvalue=data[j].value;
			if(data[j].value<minvalue && data[j].value>=0)minvalue=data[j].value;
		}
	}
//zdp add 20031227
	if(nprt->range_hi>nprt->range_low)
	{
		maxvalue=nprt->range_hi;
		minvalue=nprt->range_low;
	}
	if(maxvalue-minvalue==0)minvalue-=minvalue/100;
	if(maxvalue==minvalue && minvalue==0)maxvalue=1;

	int viewt=30;int viewb=viewh-20-2;
	CString maxstr,minstr;
	maxstr.Format("%f",maxvalue);
	minstr.Format("%f",minvalue);
	pDC->MoveTo(2,viewt);pDC->LineTo(vieww-4,viewt);pDC->TextOut(2,viewt-5,maxstr);
	pDC->MoveTo(2,viewb);pDC->LineTo(vieww-4,viewb);pDC->TextOut(2,viewb-5,minstr);
	CString str;
	str.Format("%s %s",dtfrom.Format("%Y-%m-%d %H:%M"),dtto.Format("%Y-%m-%d %H:%M"));
	pDC->TextOut(2,2,str);
	viewh=viewb-viewt;
	pDC->SelectObject(&NewPen);
	if(true)
	{
		double oldvalidvalue=minvalue;
		int begin=0;
		int x,y,xx;
		xx=(vieww-2)/count;
		x=2;
		y=(int)(viewb-(data[begin].value-minvalue)*viewh/(maxvalue-minvalue));
		pDC->MoveTo(x,y);
		int invalidcount=0;
		for(int j=1;j<count;j++)
		{
			if(data[j].state==101 && data[j].value>=minvalue && data[j].value<=maxvalue)
			{
				invalidcount=0;
				oldvalidvalue=data[j].value;
			}
			else
				invalidcount++;
//			if(data[j].value<minvalue)oldvalidvalue=minvalue;
//			if(data[j].value>maxvalue)oldvalidvalue=maxvalue;
			if(invalidcount>5)oldvalidvalue=minvalue;
			pDC->MoveTo(x,y);
			x=(vieww-2)*j/count+2;
			y=(int)(viewb-(oldvalidvalue-minvalue)*viewh/(maxvalue-minvalue));
			//y=viewb;
			pDC->LineTo(x,y);
		}
		viewcount++;
	}
	pDC->SetTextColor( OldColor );
	pDC->SelectObject( OldFont );
	pDC->SelectObject( OldBrush);
	pDC->SelectObject( OldPen);
	pDC->SetBkMode( OldBKMode );
	return true;
}

void CHistoryForm::OnInitialUpdate() 
{
	TVisualFormView::OnInitialUpdate();

	m_ctlRT.ResetContent();
	NPRT nprt;
	for(int i=0;i<arrRT.GetSize();i++)
	{
		nprt=arrRT.GetAt(i);
		if(nprt->saving_cycle>0)
		{
			NPCD npcd;
			NPCS npcs;
			for(int j=0;j<arrCD.GetSize();j++)
			{
				npcd=arrCD.GetAt(j);
				if(npcd->cdid==nprt->cdid)break;
			}
			for(j=0;j<arrCS.GetSize();j++)
			{
				npcs=arrCS.GetAt(j);
				if(npcs->csid==nprt->csid)break;
			}
			CString str;
			str.Format("%-15s%10s",npcd->cdname,npcs->csname);
			int cur=m_ctlRT.AddString(str);
			m_ctlRT.SetItemData(cur,nprt->rtid);
		}
	}
	m_ctlRT.SetCurSel(0);
}

void CHistoryForm::OnSelendokCbxRt() 
{
	pic_valid=false;
	data_valid=ReadData();
	this->Invalidate();
}

void CHistoryForm::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnSelendokCbxRt();	
	*pResult = 0;
}

void CHistoryForm::OnDatetimechangeDatetimepicker2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnSelendokCbxRt();	
	*pResult = 0;
}

bool CHistoryForm::ReadData()
{
	this->UpdateData();
	int rtid;
	int sel;
	if(data!=NULL)
	{
		delete data;
		data=NULL;
	}
	sel=m_ctlRT.GetCurSel();
	bool valid=false;
	if(sel!=CB_ERR)
	{
		rtid=m_ctlRT.GetItemData(sel);
//			int count;
		dtfrom.SetDateTime(m_dt1.GetYear(),m_dt1.GetMonth(),m_dt1.GetDay(),0,0,0);
		dtto.SetDateTime(m_dt2.GetYear(),m_dt2.GetMonth(),m_dt2.GetDay(),23,59,59);
		data=::ReadDataFromFile(rtid,dtfrom,dtto,count);
		
		if(data!=NULL && count>0)
//			DrawMe(data,count,&DCMEM);

		valid=true;
	}
	return valid;
}

void CHistoryForm::OnSize(UINT nType, int cx, int cy) 
{
	TVisualFormView::OnSize(nType, cx, cy);
	
	pic_valid=false;	
}

void CHistoryForm::OnMouseMove(UINT nFlags, CPoint point) 
{
	if(count<=0)return;
	CRect rect;
	this->GetClientRect(&rect);
	CRect picrect(2,40,rect.Width()-2,rect.Height()-2);
	if(picrect.PtInRect(point))
	{
		CString str1,str2;
		
		if(oldx!=-1)
		{
			m_pDC->MoveTo(oldx,40);
			m_pDC->LineTo(oldx,600);
			m_pDC->BitBlt(oldtextx,60,100,50,&DCMEM,oldtextx-2,20,SRCCOPY);
		}
		oldx=point.x;
		int pos;
		pos=(oldx-2)*count/(rect.Width()-4);
		COleDateTimeSpan dtspan;

		if(pos<count)
		{
			dtspan.SetDateTimeSpan(pos/(24*60),pos%(24*60)/60,(pos%(24*60))%60,0);
			COleDateTime dt;
			dt=dtfrom+dtspan;
			str1.Format("%s",dt.Format("%Y%m%d %H%M"));
			str2.Format("%f",data[pos].value);
		}
		else 
		{
			str1.Format("%d,%d",point.x,point.y);
			str2="";
		}
		if(oldx>(picrect.right-102))oldtextx=oldx-102;
		else oldtextx=oldx;
		CRect rc(oldtextx,60,oldtextx+100,85);
		CRect rc1(oldtextx,85,oldtextx+100,100);
		m_pDC->DrawText(str1,-1,&rc,0);
		m_pDC->DrawText(str2,-1,&rc1,0);
//		m_ctlPoint.SetWindowText(str);
		m_pDC->MoveTo(point.x,40);
		m_pDC->LineTo(point.x,600);
	}	
	TVisualFormView::OnMouseMove(nFlags, point);
}



void CHistoryForm::OnBtnSave() 
{
	this->UpdateData();
	int rtid;
	int sel;
	if(data==NULL||count<1)
	{
		return;
	}
	sel=m_ctlRT.GetCurSel();
	if(sel!=CB_ERR)
	{
		rtid=m_ctlRT.GetItemData(sel);
		NPRT nprt;NPCD npcd;NPCS npcs;
		for(int x=0;x<arrRT.GetSize();x++)
		{
			nprt=arrRT.GetAt(x);
			if(nprt->rtid==rtid)break;
		}
		for(x=0;x<arrCD.GetSize();x++)
		{
			npcd=arrCD.GetAt(x);
			if(npcd->cdid==nprt->cdid)break;
		}
		for(x=0;x<arrCS.GetSize();x++)
		{
			npcs=arrCS.GetAt(x);
			if(npcs->csid==nprt->csid)break;
		}

		CString filename,buf;
		filename="c:\\a.txt";
		CFileDialog dlg( TRUE,_T("TXT"),_T("*.TXT"),
						 OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
						 _T("文本文件 (*.TXT)|*.TXT|"));

		if( dlg.DoModal()==IDOK )
		{
			CFile file;
			filename=dlg.GetPathName();
			file.Open(filename,CFile::modeWrite|CFile::modeCreate);
			file.SetLength(0);
			
			buf="測(cè)點(diǎn)名稱,參數(shù)名稱,日期時(shí)間,數(shù)據(jù)值,有效性";

			buf+="\r\n";
			file.Write(buf,buf.GetLength());

			for(int i=0;i<count;i++)
			{
				buf=npcd->cdname+","+npcs->csname+",";
				COleDateTimeSpan dtspan;
				dtspan.SetDateTimeSpan(i/(24*60),i%(24*60)/60,(i%(24*60))%60,0);
				COleDateTime dt;
				dt=dtfrom+dtspan;
				CString str;
				str.Format("%s",dt.Format("%Y-%m-%d %H:%M"));
				buf+=str+",";
				str.Format("%f,%d",data[i].value,data[i].state);
				buf+=str;
				buf+="\r\n";
				file.Write(buf,buf.GetLength());
			}
			file.Close();
		}
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频免费观看| 五月天亚洲婷婷| 91麻豆精品国产自产在线| 国产在线视频不卡二| 亚洲精品视频一区| 国产日韩在线不卡| 69堂亚洲精品首页| 99久久国产免费看| 国产乱码精品一区二区三区忘忧草| 一区二区三区日韩欧美| 日本一区二区成人| 欧美一区二区在线观看| 91电影在线观看| 99免费精品视频| 国产在线不卡一卡二卡三卡四卡| 一区二区三区在线视频观看| 国产精品你懂的在线欣赏| 欧美大片一区二区三区| 欧美福利一区二区| 欧美三级蜜桃2在线观看| 精品免费国产二区三区| 欧美日韩第一区日日骚| 色综合久久久久网| 成人动漫一区二区| 国产一区二区三区四区在线观看| 日本aⅴ亚洲精品中文乱码| 亚洲精品自拍动漫在线| 自拍偷拍亚洲欧美日韩| 国产精品传媒在线| 国产精品无码永久免费888| 精品免费国产二区三区| 日韩欧美一级二级| 日韩美一区二区三区| 日韩视频在线你懂得| 欧美久久久久免费| 欧美精品第1页| 欧美日韩国产免费| 欧美日韩黄色影视| 欧美绝品在线观看成人午夜影视| 精品视频在线看| 欧美精品乱人伦久久久久久| 在线播放国产精品二区一二区四区| 欧美在线999| 欧美日韩亚洲国产综合| 欧美日韩一区小说| 69成人精品免费视频| 制服丝袜激情欧洲亚洲| 91精品国产一区二区| 日韩一级大片在线| 精品国产乱码91久久久久久网站| 欧美变态口味重另类| 久久新电视剧免费观看| 久久久久久电影| 国产精品色在线| 亚洲欧美另类久久久精品2019| 亚洲精品写真福利| 视频一区在线视频| 国产一区二区三区综合| 成人黄页在线观看| 91黄色免费看| 3atv在线一区二区三区| 欧美成人性福生活免费看| 欧美国产精品中文字幕| 一区二区三区成人在线视频| 日韩电影一区二区三区| 九九**精品视频免费播放| 丁香婷婷综合色啪| 欧洲生活片亚洲生活在线观看| 欧美精品18+| 26uuu国产一区二区三区| 中文字幕乱码亚洲精品一区| 亚洲免费视频中文字幕| 同产精品九九九| 国产美女精品一区二区三区| 成人动漫一区二区在线| 欧美三级电影一区| 亚洲精品一区二区三区99| 中文字幕一区日韩精品欧美| 日日摸夜夜添夜夜添精品视频| 国产一区二区精品久久| 在线观看国产精品网站| 久久伊99综合婷婷久久伊| 一区二区三区在线观看欧美| 久久成人麻豆午夜电影| 99精品欧美一区| 欧美sm美女调教| 亚洲一区二区中文在线| 国产乱妇无码大片在线观看| 日本精品视频一区二区三区| 精品国产一区二区精华| 一区二区三区四区不卡在线| 国产麻豆精品theporn| 欧美三级日本三级少妇99| 国产欧美精品区一区二区三区| 亚洲国产一区二区a毛片| 国产精品 欧美精品| 欧美另类videos死尸| 国产精品久久久久影院| 九一九一国产精品| 欧美日韩美少妇| 国产精品盗摄一区二区三区| 久久99久久精品欧美| 欧美天堂一区二区三区| 中文av一区特黄| 九九**精品视频免费播放| 欧美日韩国产123区| 亚洲欧美日韩中文字幕一区二区三区| 精品一区二区av| 欧美精品粉嫩高潮一区二区| 亚洲欧美激情小说另类| 成人性视频免费网站| 2欧美一区二区三区在线观看视频| 亚洲成人av免费| 一本久久a久久精品亚洲| 国产日韩欧美电影| 韩国成人精品a∨在线观看| 欧美一区二区三区免费在线看 | 亚洲天堂精品在线观看| 国产精品99精品久久免费| 欧美一区二区三区在线看| 亚洲国产一区二区视频| 色呦呦网站一区| 国产精品久久久久久久久图文区 | www成人在线观看| 青青草国产成人av片免费| 精品婷婷伊人一区三区三| 亚洲精品国产无套在线观| www.爱久久.com| 国产精品美女久久久久aⅴ| 国产在线不卡一区| 欧美精品一区二区蜜臀亚洲| 免费成人在线网站| 日韩视频不卡中文| 久久99精品国产.久久久久久| 日韩欧美电影在线| 久久国产精品无码网站| 欧美成人福利视频| 久久国产剧场电影| 久久婷婷国产综合国色天香| 久久精品国产99国产| 欧美变态tickle挠乳网站| 看电视剧不卡顿的网站| 精品国产一区二区三区久久影院| 激情成人午夜视频| 久久久久久免费网| www.在线成人| 亚洲精品网站在线观看| 欧美性大战久久| 日韩av中文字幕一区二区| 日韩视频免费直播| 国产一区二区不卡| 欧美激情综合五月色丁香小说| 粉嫩aⅴ一区二区三区四区 | 欧美三级日韩在线| 婷婷成人综合网| 欧美成人a∨高清免费观看| 国产精品羞羞答答xxdd| 国产精品久久久久一区二区三区 | 国产丝袜美腿一区二区三区| 成人国产亚洲欧美成人综合网 | 亚洲久草在线视频| 欧美精品亚洲二区| 精品一区二区免费视频| 国产精品久久久久久妇女6080| 91国偷自产一区二区使用方法| 五月天亚洲精品| www国产亚洲精品久久麻豆| 成人av片在线观看| 香蕉影视欧美成人| 久久亚洲欧美国产精品乐播| av激情亚洲男人天堂| 亚洲成人免费观看| www国产亚洲精品久久麻豆| av在线播放不卡| 青青青伊人色综合久久| 中文欧美字幕免费| 制服.丝袜.亚洲.另类.中文| 国产精品66部| 亚洲制服丝袜av| 久久久久久久精| 欧美性大战久久久久久久蜜臀 | 91小宝寻花一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 久久亚洲私人国产精品va媚药| 99re在线精品| 久久电影网电视剧免费观看| 亚洲欧美国产77777| 精品福利一区二区三区 | 日本道精品一区二区三区| 麻豆高清免费国产一区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久99精品国产麻豆不卡| 亚洲免费观看高清完整版在线观看 | 色欲综合视频天天天| 激情伊人五月天久久综合| 亚洲欧美区自拍先锋| 久久免费国产精品| 欧美日韩国产小视频在线观看| 成人av资源在线观看| 黑人巨大精品欧美一区|