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

📄 wgl_32doc.cpp

📁 VC环境下电力系统故障录波数据管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	xlstart--;
	while(xlstart < ShortNodeNum)
	{
		while(xlstart < ShortNodeNum && m_pShortNode[xlstart].bShow==0)
		{
			if(lli == m_pShortNode[xlstart].lend)
			{
				if(lli >= index) return;
				xpos += ShortWidth;
			}
			else
			{
				if(lli >= index) return;
				xpos += ShortWidth/2;
			}
			xlstart++;
			lli = m_pShortNode[xlstart].lend;
		}
		if(xlstart == ShortNodeNum-1)
			return;
		lle = m_pShortNode[xlstart+1].lend;
		if(lle >= index)
		{
			xpos += intINT((index-lli)*m_XSizeFactor);
			return;
		}
		xpos += intINT((lle-lli)*m_XSizeFactor);
		xlstart ++;
		lli = m_pShortNode[xlstart].lend;
	}
}

void CWgl_32Doc::GetNextHPage(unsigned long& EPage)
{
	int Page = 0;
	int xlstart = 0;
	unsigned long lli=PageFromSampNum;
	while(xlstart<ShortNodeNum && m_pShortNode[xlstart].lend<=lli)
		xlstart ++;
	xlstart--;
	while(xlstart < ShortNodeNum)
	{
		while(xlstart < ShortNodeNum && m_pShortNode[xlstart].bShow==0)
		{
			if(m_pShortNode[xlstart].lend == lli)
				Page = Page+ShortWidth;
			else
				Page = Page+ShortWidth/2;
			if(Page > pageHWidth)
			{
				EPage = m_pShortNode[xlstart].lend+1;
				return;
			}
			else
			{
				xlstart ++;
				if(Page == pageHWidth)
				{
					EPage = m_pShortNode[xlstart].lend;
					return;
				}
			}
			lli = m_pShortNode[xlstart].lend;
		} // end in while
		if(xlstart+1 == ShortNodeNum)
		{
			EPage = EndSampNum-1;
			return;
		}
		unsigned long tul;
		tul=m_pShortNode[xlstart+1].lend-lli;
		int v = pageHWidth-Page;
		Page = Page+intINT(tul*m_XSizeFactor);
		if(Page > pageHWidth)
		{
			Page = intINT(v/m_XSizeFactor);
			EPage = lli+Page;
			if(EPage > EndSampNum-1)
				EPage = EndSampNum-1;
			return;
		}
		else
		{
			xlstart ++;
			if(Page == pageHWidth)
			{
				EPage = m_pShortNode[xlstart].lend;
				if(EPage > EndSampNum-1)
					EPage = EndSampNum;
				return;
			}
		}
		lli = m_pShortNode[xlstart].lend;
	} // end out while
	EPage = 0;
}

void CWgl_32Doc::GetPrevHPage(unsigned long& EPage)
{
	int Page = 0;
	int xlstart = ShortNodeNum-1;
	unsigned long lli=PageFromSampNum;
	while(xlstart>0 && m_pShortNode[xlstart].lend>=lli)
		xlstart --;
	while(xlstart >= 0)
	{
		while(xlstart >= 0 && m_pShortNode[xlstart].bShow==0)
		{
			if(m_pShortNode[xlstart+1].lend == lli)
				Page = Page+ShortWidth;
			else
				Page = Page+ShortWidth/2;
			if(Page > pageHWidth)
			{
				EPage = m_pShortNode[xlstart].lend+1;
				return;
			}
			else
			{
				lli = m_pShortNode[xlstart].lend;
				xlstart --;
				if(Page == pageHWidth)
				{
					EPage = m_pShortNode[xlstart].lend;
					return;
				}
			}
		} // end in while
		double tul;
		tul=lli-m_pShortNode[xlstart].lend;
		double v=pageHWidth-Page;
		Page = Page+intINT(tul*m_XSizeFactor);
		if(Page >= pageHWidth)
		{
			Page = intINT(v/m_XSizeFactor);
			EPage = lli-Page;
			if(EPage<0)
				EPage = 0;
			return;
		}
		else
		{
			lli = m_pShortNode[xlstart].lend;
			xlstart --;
			if(xlstart < 0) break;
			if(Page == pageHWidth)
			{
				EPage = m_pShortNode[xlstart].lend;
				if(EPage<0)
					EPage = 0;
				return;
			}
		}
	} // end out while
	EPage = 0;
}

void CWgl_32Doc::GetNextHLine(unsigned long& Line)
{
	int xlstart = 0;
	unsigned long lli=PageFromSampNum;
	while(xlstart<ShortNodeNum && m_pShortNode[xlstart].lend<=lli)
		xlstart ++;
	xlstart --;
	if(m_pShortNode[xlstart].bShow==0)
	{
		if(m_pShortNode[xlstart].lend==lli)
		{
			if(lli < EndSampNum-1)
				Line = lli+1;
			return;
		}
		if(xlstart<ShortNodeNum) xlstart++;
		Line = m_pShortNode[xlstart].lend;
		if(Line > EndSampNum-1)
			Line = EndSampNum-1;
		return;
	}
	if(lli < EndSampNum-1)
		Line = lli+1;
}

void CWgl_32Doc::GetPrevHLine(unsigned long& Line)
{
	int xlstart = 0;
	unsigned long lli=PageFromSampNum;
	while(xlstart<ShortNodeNum && m_pShortNode[xlstart].lend<=lli)
		xlstart ++;
	xlstart --;
	if(m_pShortNode[xlstart].bShow==0)
	{
		if(m_pShortNode[xlstart].lend<lli)
		{
			Line = m_pShortNode[xlstart].lend;
			return;
		}
		if(m_pShortNode[xlstart].lend>0)
			Line = m_pShortNode[xlstart].lend-1;
		else
			Line = 0;
		return;
	}
	if(lli>0)
		Line = lli-1;
}

//////////////////////////////////////////////////////////////////////////////
// Command Handlers
void CWgl_32Doc::OnEditSegment() 
{
	CSegment seg;
	CString strTemp;
	seg.m_editmax = EndSampNum;
	for(int i=0; i<ShortNodeNum; i++)
	{
		strTemp.Format(seg.strFormat,m_pShortNode[i].lend);
		if(m_pShortNode[i].lend != EndSampNum)
			if(m_pShortNode[i].bShow)
				strTemp += seg.strShow;
			else
				strTemp += seg.strHide;
		seg.List.Add(strTemp);
	}
	do
	{
		if(seg.DoModal() != IDOK)
			return;
		strTemp = seg.strShow;
	} while(!RelocalShortNode(seg.List,strTemp));
	AdjustSampIndex(LCursor,FALSE);
	AdjustSampIndex(RCursor,FALSE);

	CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
	CMDIChildWnd *pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();
	CWgl_32View *pView = (CWgl_32View *)pChild->GetActiveView();
	CRect rect;
	pView->GetClientRect(&rect);
	pView->SetResynScroll(rect.right,rect.bottom);
	UpdateAllViews( NULL );
}

void CWgl_32Doc::OnChangeCurveColor() 
{
	if(bReadError) return;
	CCurveColor ClrDlg(this);
	ClrDlg.DoModal();
	if(ClrDlg.bChange)
		UpdateAllViews( NULL );
	return;
}

void CWgl_32Doc::UpdateView(BOOL bTree, BOOL bRigh)
{
	CMDIFrameWnd *pFrame=(CMDIFrameWnd *)AfxGetApp()->m_pMainWnd;
	CChildFrame *pChild=(CChildFrame *)pFrame->GetActiveFrame();
	if(bTree)
	{
		CTreeDisp *pTreeView = 
			(CTreeDisp *)pChild->m_wndSplitter.GetPane(0,0);
		pTreeView->SetVScroll();
	}
	if(bRigh)
	{
		CRighView *pRighView = 
			(CRighView *)pChild->m_wndSplitter.GetPane(1,1);
		pRighView->InvalidateRect( NULL );
	}
}

void CWgl_32Doc::OnViewGroupShow() 
{
	CViewLine viewgroup(this);
	if(viewgroup.DoModal()==IDCANCEL) return;
	mNumViewChannel = 0;
	for(int i=0; i<m_ChannelNum; i++)
		if(m_pChannelIndex[i].bShow) mNumViewChannel ++;
	CMDIFrameWnd *pFrame=(CMDIFrameWnd *)AfxGetApp()->m_pMainWnd;
	CMDIChildWnd *pChild=(CMDIChildWnd *)pFrame->GetActiveFrame();
	CWgl_32View *pView=(CWgl_32View *)pChild->GetActiveView();
	m_ViewChannelMax = m_ChannelNum;
	for(i=0; i<pView->nRemaindCurve; i++)
	{
		while(m_ViewChannelMax >= 0
			&& m_pChannelIndex[m_ViewChannelMax].bShow==0)
			m_ViewChannelMax --;
		m_ViewChannelMax --;
	}
	m_ViewChannelMax ++;
	m_ViewChannelMin = 0;
	while(m_ViewChannelMin < m_ViewChannelMax
		&& m_pChannelIndex[m_ViewChannelMin].bShow==0)
		m_ViewChannelMin ++;
	if(m_ViewChannel >= m_ViewChannelMax)
		m_ViewChannel = m_ViewChannelMax;
	else if(m_ViewChannel <= m_ViewChannelMin)
		m_ViewChannel = m_ViewChannelMin;
	else
		while(m_ViewChannel>m_ViewChannelMin
		&& m_pChannelIndex[m_ViewChannel].bShow==0)
		m_ViewChannel --;
	CRect rect;
	pView->GetClientRect(&rect);
	pView->SetResynScroll(rect.right,rect.bottom);
	UpdateAllViews( NULL );
}

void CWgl_32Doc::OnViewWhichValue() 
{
	bFirstValue = !bFirstValue;
	if(bFirstValue)
	{
		DblVVT = DblVT;
		DblAAT = DblAT;
		if(m_pChannel[nWhichCurve].VAD==0)
		{
			LCursorA *= DblAAT;
			RCursorA *= DblAAT;
		}
		if(m_pChannel[nWhichCurve].VAD==1)
		{
			LCursorA *= DblVVT;
			RCursorA *= DblVVT;
		}
	}
	else
	{
		if(m_pChannel[nWhichCurve].VAD==0)
		{
			LCursorA /= DblAAT;
			RCursorA /= DblAAT;
		}
		if(m_pChannel[nWhichCurve].VAD==1)
		{
			LCursorA /= DblVVT;
			RCursorA /= DblVVT;
		}
		DblVVT = DblAAT = 1.0;
	}
	UpdateView( TRUE, TRUE );
}

void CWgl_32Doc::OnUpdateViewWhichValue(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( bFirstValue );
}

void CWgl_32Doc::OnVirtueValue() 
{
	bVirtualValue = !bVirtualValue;
	UpdateView( TRUE, TRUE );
}

void CWgl_32Doc::OnUpdateVirtueValue(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( bVirtualValue );
}

void CWgl_32Doc::GetDisplayValue(WORD wChannel,double& dmin,double& dmax)
{
	if(!bVirtualValue && !bFirstValue) return;
	double SampRate,a,b;
	a = m_pChannel[wChannel].a;
	b = m_pChannel[wChannel].b;
	int i=0;
	while(i < m_NumRates && m_pSampRates[i].EndSampNum<LCursor) 
		i++;
	if(i == m_NumRates) goto RV;
	if(m_pSampRates[i].SampRate < 1000) goto RV;
	SampRate=m_pSampRates[i].SampRate/m_FreqPhase;
	if(bVirtualValue)
	{
		int r = m_pSampRates[i].EndSampNum-LCursor;
		if( r < SampRate) goto RV;
		double v=0.0;
		for(i=0; i<SampRate; i++)
		{
			double vi=PSamplData[wChannel][LCursor+i]*a+b;
			v += vi*vi;
		}
		v = v/SampRate;
		v = sqrt(v);
		dmin = v;
	}
RV:
	i=0;
	while(i < m_NumRates && m_pSampRates[i].EndSampNum<RCursor) 
		i++;
	if(i == m_NumRates) goto FS;
	if(m_pSampRates[i].SampRate < 1000) goto FS;
	SampRate=m_pSampRates[i].SampRate/m_FreqPhase;
	if(bVirtualValue)
	{
		int r = m_pSampRates[i].EndSampNum-RCursor;
		if( r < SampRate) goto FS;
		double v=0.0;
		for(i=0; i<SampRate; i++)
		{
			double vi=PSamplData[wChannel][RCursor+i]*a+b;
			v += vi*vi;
		}
		v = v/SampRate;
		v = sqrt(v);
		dmax = v;
	}
FS:
	if(bFirstValue)
	{
		if(m_pChannel[wChannel].VAD==0)
		{
			dmin *= DblAAT;
			dmax *= DblAAT;
		}
		else
			if(m_pChannel[wChannel].VAD==1)
			{
				dmin *= DblVVT;
				dmax *= DblVVT;
			}
	}
}

⌨️ 快捷键说明

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