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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? oscilloscopedlg.cpp

?? 模擬了現實中的示波器
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

void COscilloscopeDlg::OnChannel(UINT nID)
{
	// TODO: Add your control notification handler code here
	int index = nID-IDC_CHONE;
	if (index == 0)
		m_ChOneRndBtn.SetLighted(!m_ChOneRndBtn.GetLightedState());
	else if(index == 1)
		m_ChTwoRndBtn.SetLighted(!m_ChTwoRndBtn.GetLightedState());
	else if(index == 2)
		m_ChThreeRndBtn.SetLighted(!m_ChThreeRndBtn.GetLightedState());

	m_bChannel[index] = !m_bChannel[index];
	m_ctrlCurveFrame.SetCurveChannel(m_bChannel[0],m_bChannel[1],m_bChannel[2]);

}

void COscilloscopeDlg::OnSelchangeCmbSignaltype() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	//波形數據
	Signal[m_nCurChannel].SignalType = m_btnSignalType.GetCurSel();
}

//當窗口需要確定鼠標位置時Windows向窗口發送WM_NCHITTEST信息,
//可以處理該信息使Windows認為鼠標在窗口標題上。
//對于對話框和基于對話的應用程序,可以使用ClassWizard處理該消息并調用基類函數,
//如果函數返回HTCLIENT則表明鼠標在客戶區,
//返回HTCAPTION表明鼠標在Windows的標題欄中。 
UINT COscilloscopeDlg::OnNcHitTest(CPoint point)
{
	UINT nHitTest = CBitmapDialog::OnNcHitTest(point); 
	return (nHitTest == HTCLIENT)?HTCAPTION:nHitTest; 
}

/////////////////////////////////////////////////////////////////////////////
/*
函數介紹:	屏蔽在對話框上按ESC時,退出對話框
*/
/////////////////////////////////////////////////////////////////////////////
BOOL COscilloscopeDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message == WM_KEYDOWN)
	{
		int nKey = (int) pMsg->wParam;    
		if(VK_ESCAPE == nKey) 
			return TRUE;
	}
	return CBitmapDialog::PreTranslateMessage(pMsg);
}

void COscilloscopeDlg::OnSize(UINT nType, int cx, int cy) 
{
	CBitmapDialog::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	Invalidate();
}


void COscilloscopeDlg::OnBtnFreqsignal() 
{
	Signal[m_nCurChannel].Frequency = m_btnFreqSignal.GetData();
	m_nNumPerCircle[m_nCurChannel] = (int)(m_btnFreqSample.GetData()/Signal[m_nCurChannel].Frequency);
	m_nCurNumOfSample[m_nCurChannel] = 0;//當改變信號頻率后,從0度重新開始產生波形
}

void COscilloscopeDlg::OnBtnAmplitude() 
{
	Signal[m_nCurChannel].Amplitude = m_btnAmplitude.GetData();
}

void COscilloscopeDlg::OnBtnOffset() 
{
	// TODO: Add your control notification handler code here
	Signal[m_nCurChannel].Offset = m_btnOffset.GetData();
}

void COscilloscopeDlg::OnBtnPhase() 
{
	// TODO: Add your control notification handler code here
	Signal[m_nCurChannel].Phase = m_btnPhase.GetData();
}

void COscilloscopeDlg::OnBtnWidth() 
{
	// TODO: Add your control notification handler code here
	m_ctrlCurveFrame.SetCurveWidth(int(m_btnWidth.GetData()), m_nCurChannel);
}

void COscilloscopeDlg::OnBtnFreqsample() 
{
	// TODO: Add your control notification handler code here
	double tmp = m_btnFreqSample.GetData();
	UpdateData(TRUE);
	if (m_btnFreqSample.GetData() <= 2*Signal[0].Frequency ||
		m_btnFreqSample.GetData() <= 2*Signal[1].Frequency ||
		m_btnFreqSample.GetData() <= 2*Signal[2].Frequency)
	{
		MessageBox("輸入的采樣頻率不能滿足采樣定律!");
		m_btnFreqSample.SetData(tmp);
		UpdateData(FALSE);
	}
	else
	{
		for(int i=0; i<3; i++)
		{
			m_nNumPerCircle[i] = (int)(m_btnFreqSample.GetData()/Signal[i].Frequency);
			Signal[i].Number = int(m_btnFreqSample.GetData()*100/1000);//采樣頻率*每屏的時間/1000
			m_nCurNumOfSample[i] = 0;//當改變擦采樣頻率后,從0度重新開始產生波形
		}
	}	
}
void COscilloscopeDlg::SaveDlgItemRect(CDialog *pDlg, int firstItem, int lastItem)
{
	int nNumOfItem = lastItem - firstItem + 1;

	for(int i=0; i<nNumOfItem; i++)
	{
		pDlg->GetDlgItem(firstItem + i)->GetClientRect(&rcItem[i]);
		ClientToScreen(rcItem[i]);
	}
	pDlg->GetClientRect(&rcDlg);
	ClientToScreen(rcDlg);
}
void COscilloscopeDlg::ResizeDlgItem(CDialog *pDlg, int firstItem, int lastItem)
{
	int nNumOfItem = lastItem - firstItem + 1;
	
	for(int i=0; i<nNumOfItem+1; i++)
	{
		pDlg->GetDlgItem(firstItem + i)->GetClientRect(&rcItem[i]);
	}
}


void COscilloscopeDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
   // Get the minimum and maximum scroll-bar positions.
   int minpos;
   int maxpos;
   
   pScrollBar->GetScrollRange(&minpos, &maxpos); 
   maxpos = pScrollBar->GetScrollLimit();

   // Get the current position of scroll box.
   int curpos = pScrollBar->GetScrollPos();

   // Determine the new position of scroll box.
   switch (nSBCode)
   {
   case SB_LEFT:      // Scroll to far left.
      curpos = minpos;
      break;

   case SB_RIGHT:      // Scroll to far right.
      curpos = maxpos;
      break;

   case SB_ENDSCROLL:   // End scroll.
      break;

   case SB_LINELEFT:      // Scroll left.
      if (curpos > minpos)
         curpos--;
      break;

   case SB_LINERIGHT:   // Scroll right.
      if (curpos < maxpos)
         curpos++;
      break;

   case SB_PAGELEFT:    // Scroll one page left.
   {
      // Get the page size. 
      SCROLLINFO   info;
      pScrollBar->GetScrollInfo(&info, SIF_ALL);
   
      if (curpos > minpos)
      curpos = max(minpos, curpos - (int) info.nPage);
   }
      break;

   case SB_PAGERIGHT:      // Scroll one page right.
   {
      // Get the page size. 
      SCROLLINFO   info;
      pScrollBar->GetScrollInfo(&info, SIF_ALL);

      if (curpos < maxpos)
         curpos = min(maxpos, curpos + (int) info.nPage);
   }
      break;

   case SB_THUMBPOSITION: // Scroll to absolute position. nPos is the position
      curpos = nPos;      // of the scroll box at the end of the drag operation.
      break;

   case SB_THUMBTRACK:   // Drag scroll box to specified position. nPos is the
      curpos = nPos;     // position that the scroll box has been dragged to.
      break;
   }

   // Set the new position of the thumb (scroll box).
	pScrollBar->SetScrollPos(curpos);
	m_ctrlCurveFrame.DrawCurve(RetriveSignal[curpos][0].Data, RetriveSignal[curpos][0].Number,
							   RetriveSignal[curpos][1].Data, RetriveSignal[curpos][1].Number,
							   RetriveSignal[curpos][2].Data, RetriveSignal[curpos][2].Number,
							   m_btnFreqSample.GetData());
	
	CBitmapDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void COscilloscopeDlg::SaveSignal(_Signal signal0, _Signal signal1, _Signal signal2)
{
	int i,j,k;
	if(nTimes < 5)
	{
		RetriveSignal[nTimes][0].Amplitude	= signal0.Amplitude;
		RetriveSignal[nTimes][0].Frequency	= signal0.Frequency;
		RetriveSignal[nTimes][0].Number		= signal0.Number;
		RetriveSignal[nTimes][0].Offset		= signal0.Offset;
		RetriveSignal[nTimes][0].Phase		= signal0.Phase;
		RetriveSignal[nTimes][0].SignalType = signal0.SignalType;
		for(i=0; i<1024; i++)
			RetriveSignal[nTimes][0].Data[i] = signal0.Data[i];
	
		RetriveSignal[nTimes][1].Amplitude	= signal1.Amplitude;
		RetriveSignal[nTimes][1].Frequency	= signal1.Frequency;
		RetriveSignal[nTimes][1].Number		= signal1.Number;
		RetriveSignal[nTimes][1].Offset		= signal1.Offset;
		RetriveSignal[nTimes][1].Phase		= signal1.Phase;
		RetriveSignal[nTimes][1].SignalType = signal1.SignalType;
		for(i=0; i<1024; i++)
			RetriveSignal[nTimes][1].Data[i] = signal1.Data[i];
		
		RetriveSignal[nTimes][2].Amplitude	= signal2.Amplitude;
		RetriveSignal[nTimes][2].Frequency	= signal2.Frequency;
		RetriveSignal[nTimes][2].Number		= signal2.Number;
		RetriveSignal[nTimes][2].Offset		= signal2.Offset;
		RetriveSignal[nTimes][2].Phase		= signal2.Phase;
		RetriveSignal[nTimes][2].SignalType = signal2.SignalType;
		for(i=0; i<1024; i++)
			RetriveSignal[nTimes][2].Data[i] = signal2.Data[i];

		
		nTimes ++;
	}
	else
	{
		for(i=0; i<4; i++)
		{

			RetriveSignal[i][0].Amplitude	= RetriveSignal[i+1][0].Amplitude;
			RetriveSignal[i][0].Frequency	= RetriveSignal[i+1][0].Frequency;
			RetriveSignal[i][0].Number		= RetriveSignal[i+1][0].Number;
			RetriveSignal[i][0].Offset		= RetriveSignal[i+1][0].Offset;
			RetriveSignal[i][0].Phase		= RetriveSignal[i+1][0].Phase;
			RetriveSignal[i][0].SignalType = RetriveSignal[i+1][0].SignalType;
			for(k=0; k<1024; k++)
				RetriveSignal[i][0].Data[k] = RetriveSignal[i+1][0].Data[k];

			RetriveSignal[i][1].Amplitude	= RetriveSignal[i+1][1].Amplitude;
			RetriveSignal[i][1].Frequency	= RetriveSignal[i+1][1].Frequency;
			RetriveSignal[i][1].Number		= RetriveSignal[i+1][1].Number;
			RetriveSignal[i][1].Offset		= RetriveSignal[i+1][1].Offset;
			RetriveSignal[i][1].Phase		= RetriveSignal[i+1][1].Phase;
			RetriveSignal[i][1].SignalType = RetriveSignal[i+1][1].SignalType;
			for(k=0; k<1024; k++)
				RetriveSignal[i][1].Data[k] = RetriveSignal[i+1][1].Data[k];

			RetriveSignal[i][2].Amplitude	= RetriveSignal[i+1][2].Amplitude;
			RetriveSignal[i][2].Frequency	= RetriveSignal[i+1][2].Frequency;
			RetriveSignal[i][2].Number		= RetriveSignal[i+1][2].Number;
			RetriveSignal[i][2].Offset		= RetriveSignal[i+1][2].Offset;
			RetriveSignal[i][2].Phase		= RetriveSignal[i+1][2].Phase;
			RetriveSignal[i][2].SignalType = RetriveSignal[i+1][2].SignalType;
			for(k=0; k<1024; k++)
				RetriveSignal[i][2].Data[k] = RetriveSignal[i+1][2].Data[k];

		}
		RetriveSignal[4][0].Amplitude	= signal0.Amplitude;
		RetriveSignal[4][0].Frequency	= signal0.Frequency;
		RetriveSignal[4][0].Number		= signal0.Number;
		RetriveSignal[4][0].Offset		= signal0.Offset;
		RetriveSignal[4][0].Phase		= signal0.Phase;
		RetriveSignal[4][0].SignalType = signal0.SignalType;
		for(j=0; j<1024; j++)
			RetriveSignal[4][0].Data[j] = signal0.Data[j];
	
		RetriveSignal[4][1].Amplitude	= signal1.Amplitude;
		RetriveSignal[4][1].Frequency	= signal1.Frequency;
		RetriveSignal[4][1].Number		= signal1.Number;
		RetriveSignal[4][1].Offset		= signal1.Offset;
		RetriveSignal[4][1].Phase		= signal1.Phase;
		RetriveSignal[4][1].SignalType = signal1.SignalType;
		for(j=0; j<1024; j++)
			RetriveSignal[4][1].Data[j] = signal1.Data[j];

		RetriveSignal[4][2].Amplitude	= signal2.Amplitude;
		RetriveSignal[4][2].Frequency	= signal2.Frequency;
		RetriveSignal[4][2].Number		= signal2.Number;
		RetriveSignal[4][2].Offset		= signal2.Offset;
		RetriveSignal[4][2].Phase		= signal2.Phase;
		RetriveSignal[4][2].SignalType = signal2.SignalType;
		for(j=0; j<1024; j++)
			RetriveSignal[4][2].Data[j] = signal2.Data[j];

	}
}


void COscilloscopeDlg::OnBtnChanel() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	//保存前一通道的數據
	//波形顯示數據
	m_ctrlCurveFrame.SetCurveWidth(UINT(m_btnWidth.GetData()), m_nCurChannel);
	m_ctrlCurveFrame.SetCurveColor(m_Color, m_nCurChannel);
	//波形數據
	Signal[m_nCurChannel].SignalType = m_btnSignalType.GetCurSel();
	Signal[m_nCurChannel].Amplitude	 = m_btnAmplitude.GetData();
	Signal[m_nCurChannel].Frequency  = m_btnFreqSignal.GetData();
	Signal[m_nCurChannel].Offset     = m_btnOffset.GetData();
	Signal[m_nCurChannel].Phase      = m_btnPhase.GetData();

	//取得當前通道號,并顯示當前通道的數據
	m_nCurChannel = m_btnChannel.GetCurSel();;
	//波形顯示數據
	UINT width;
	m_ctrlCurveFrame.GetCurveWidth(width, m_nCurChannel);
	m_btnWidth.SetData(double(width));

	m_ctrlCurveFrame.GetCurveColor(m_Color, m_nCurChannel);
	//波形數據
	m_btnChannel.SetCurSel(m_nCurChannel);
	m_btnSignalType.SetCurSel(Signal[m_nCurChannel].SignalType);

	m_btnAmplitude.SetData(Signal[m_nCurChannel].Amplitude);
	m_btnFreqSignal.SetData(Signal[m_nCurChannel].Frequency);
	m_btnOffset.SetData(Signal[m_nCurChannel].Offset);
	m_btnPhase.SetData(Signal[m_nCurChannel].Phase);

	UpdateData(FALSE);
	SendMessage(WM_PAINT);}

void COscilloscopeDlg::OnBtnSignaltype() 
{
	// TODO: Add your control notification handler code here
	//波形數據
	Signal[m_nCurChannel].SignalType = m_btnSignalType.GetCurSel();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av网站在线观看| 亚洲精品乱码久久久久久黑人| 日韩欧美区一区二| 国产精品嫩草影院com| 亚洲成人先锋电影| 9久草视频在线视频精品| 91精品国产黑色紧身裤美女| 国产日韩精品一区二区三区在线| 日韩欧美视频在线 | 精品国产伦理网| 日韩码欧中文字| 国产一区 二区| 91精品国产一区二区三区蜜臀| 欧美国产日韩a欧美在线观看| 丝袜诱惑制服诱惑色一区在线观看 | 日本美女一区二区三区| 不卡av在线网| 国产色一区二区| 久久精品久久精品| 69堂成人精品免费视频| 亚洲国产欧美在线| 色域天天综合网| 亚洲欧洲在线观看av| 国产精品99久久久久久久vr| 精品国产一区二区在线观看| 日韩va亚洲va欧美va久久| 亚洲一区二区三区视频在线| 五月天一区二区| 制服丝袜av成人在线看| 成人ar影院免费观看视频| 麻豆一区二区99久久久久| 91成人在线精品| 亚洲男人的天堂在线观看| eeuss国产一区二区三区| 国产视频在线观看一区二区三区| 久久99精品久久久久久动态图 | 国产成人午夜精品影院观看视频| 欧美一级黄色录像| 麻豆一区二区三区| 日韩欧美亚洲国产另类| 激情文学综合丁香| 久久久久久夜精品精品免费| 精品写真视频在线观看| 国产人久久人人人人爽| 成人午夜视频在线| 日韩欧美一区二区不卡| 91精品国产色综合久久不卡电影 | 亚洲欧洲性图库| 粉嫩av亚洲一区二区图片| 国产丝袜美腿一区二区三区| 成人性生交大片免费看在线播放| 欧美国产禁国产网站cc| 91免费观看国产| 亚洲h精品动漫在线观看| 日韩一区二区视频在线观看| 韩国v欧美v日本v亚洲v| 国产精品嫩草影院com| 91精品福利在线| 日本人妖一区二区| 久久综合久久综合久久| 99久久久久免费精品国产 | 日本不卡一区二区| 欧美videofree性高清杂交| 国产呦萝稀缺另类资源| 亚洲欧美在线观看| 欧美卡1卡2卡| 国产激情91久久精品导航| 亚洲日本免费电影| 日韩欧美色综合| 91色九色蝌蚪| 美女视频黄免费的久久 | 欧美一区二区三区不卡| 福利一区二区在线观看| 亚洲国产美国国产综合一区二区| 日韩欧美国产综合在线一区二区三区| 成人免费毛片嘿嘿连载视频| 亚洲主播在线播放| 国产日韩在线不卡| 欧美精品丝袜久久久中文字幕| 狠狠网亚洲精品| 亚洲国产精品久久久久秋霞影院| 精品国产髙清在线看国产毛片| 色综合欧美在线| 国产真实乱对白精彩久久| 亚洲午夜免费福利视频| 国产精品女主播av| 精品美女被调教视频大全网站| 91国偷自产一区二区三区成为亚洲经典 | 国产91在线观看| 天天综合网天天综合色| 国产精品视频在线看| 日韩午夜激情视频| 欧美亚洲动漫制服丝袜| 成人激情免费视频| 麻豆精品国产91久久久久久| 亚洲成av人片在线观看无码| 专区另类欧美日韩| 国产精品女同互慰在线看| 精品sm捆绑视频| 欧美成人福利视频| 在线观看91精品国产麻豆| 欧洲精品一区二区三区在线观看| 粉嫩av亚洲一区二区图片| 国产毛片精品视频| 久久99久久99精品免视看婷婷 | 亚洲欧洲av在线| 国产三级一区二区| 久久在线观看免费| 日韩欧美电影一区| 欧美一区二区三区免费视频| 欧美三区在线观看| 欧美日韩国产美| 欧美性一级生活| 欧美日韩三级一区二区| 欧美综合一区二区| 欧美亚洲一区二区三区四区| 在线免费观看不卡av| 色伊人久久综合中文字幕| 99久久久免费精品国产一区二区| 国产精品资源在线观看| 久久国产成人午夜av影院| 另类小说欧美激情| 精品一二三四区| 国产精品自在在线| 成人av手机在线观看| 不卡免费追剧大全电视剧网站| 99re热视频精品| 一本一本大道香蕉久在线精品| 91福利精品视频| 精品国产伦一区二区三区观看方式| 欧美丰满少妇xxxxx高潮对白| 4438成人网| 精品国产电影一区二区| 国产精品免费看片| 亚洲精品老司机| 天堂av在线一区| 国产在线视视频有精品| 丁香天五香天堂综合| 色悠悠久久综合| 制服丝袜一区二区三区| 久久无码av三级| 亚洲三级视频在线观看| 五月婷婷激情综合| 国产精品77777竹菊影视小说| 不卡视频一二三四| 51精品秘密在线观看| 国产精品91一区二区| 国产超碰在线一区| 日韩电影免费在线| 国产精品自在欧美一区| 91年精品国产| 日韩欧美的一区| 亚洲欧美一区二区三区久本道91| 午夜精品成人在线| 国产激情视频一区二区在线观看 | 久久午夜羞羞影院免费观看| 中文在线资源观看网站视频免费不卡 | 国产不卡一区视频| 欧美性xxxxxx少妇| 国产校园另类小说区| 亚洲影院久久精品| 粉嫩av一区二区三区在线播放 | 欧美一区二区三区免费观看视频| 亚洲国产精品国自产拍av| 亚洲高清免费视频| 国产精品一二三四五| 91激情在线视频| 国产欧美一区二区精品忘忧草| 日韩码欧中文字| 五月婷婷综合在线| 99久久99久久精品国产片果冻| 欧美一区二区三区视频免费播放| 亚洲特黄一级片| 久久99精品国产91久久来源| 欧美天天综合网| 最新国产精品久久精品| 国产一区在线观看视频| 欧美喷潮久久久xxxxx| 《视频一区视频二区| 国产成人亚洲综合a∨婷婷| 欧美一区日本一区韩国一区| 亚洲婷婷国产精品电影人久久| 国产激情精品久久久第一区二区 | 99精品久久免费看蜜臀剧情介绍| 欧美一二三四区在线| 亚洲综合久久久久| kk眼镜猥琐国模调教系列一区二区| 久久这里只有精品视频网| 奇米色一区二区三区四区| 欧美性猛片xxxx免费看久爱| 亚洲色图欧洲色图| 99热精品一区二区| 国产精品久久久久久久久免费相片| 精品无人码麻豆乱码1区2区 | 一区二区三区免费网站| 成人激情动漫在线观看| 国产日韩欧美不卡在线| 国产麻豆9l精品三级站| 久久精品一区二区三区不卡牛牛| 久久激情综合网|