1.5 主窗体设计(6)
(22)处理主对话框的WM_TIMER消息,判断某一路是否有视频信号。代码如下:
- void CCaptureDlg::OnTimer(UINT nIDEvent)
- {
- //判断某一路是否有信号
- eFieldFrequency frequency;
- for (int i=0;i<m_DevNum;i++)
- {
- VCAGetVidFieldFrq(i,frequency);
//获得视频源输入频率 - if(frequency == FIELD_FREQ_0HZ) //无信号
- {
- if (m_Frame.m_pList[i].m_ShowImage == TRUE)
- {
- m_Frame.m_pList[i].m_ShowImage = FALSE;
- m_Frame.m_pList[i].Invalidate();
//更新预览窗口 - }
- }
- else
- {
- if(m_Frame.m_pList[i].m_ShowImage == FALSE)
//判断是否显示图片 - {
- m_Frame.m_pList[i].m_ShowImage = TRUE;
- m_Frame.m_pList[i].Invalidate();
//更新预览窗口 - if(m_Frame.m_pList[i].m_Stop == psPreview)
- {
- //更新视频预览窗口
- VCAUpdateOverlayWnd(m_Frame.m_hWnd);
- VCAUpdateVideoPreview(i,m_Frame.m_pList[i].m_hWnd);
- }
- }
- }
- }
- CDialog::OnTimer(nIDEvent);
- }
(23)处理主对话框的WM_SIZE消息,在对话框大小改变时调整视频显示窗口的父窗口大小,从而间接调整预览窗口。代码如下:
- void CCaptureDlg::OnSize(UINT nType, int cx, int cy)
- {
- CDialog::OnSize(nType, cx, cy);
- CRect rc,frc;
- GetClientRect(rc);
//获取窗口的客户区域 - //设置父窗口的大小
- m_Frame.SetWindowPos(&wndTop,0,0,rc.Width()-
180,rc.Height()-10,SWP_SHOWWINDOW); - m_Frame.GetClientRect(frc);
//获得父窗口的客户区域 - m_Frame.SetWindowPos(NULL,0,7,frc.Width(),rc.Height()-8,0);
- m_Frame.ShowWindow(SW_SHOW); //显示父窗口
- }
(24)处理"快照"按钮的单击事件,截取当前预览图像,并根据选择的类型保存成相应的文件。代码如下:
- void CCaptureDlg::OnSnapshot()
- {
- if(CPreView::m_CurIndex != -1)
//判断是否有预览窗口 - {
- if(m_Frame.m_pList[CPreView::m_CurIndex].m_ShowImage)
- {
- CButton* pBmpButton = (CButton*)GetDlgItem(IDC_BMP);
- if(pBmpButton->GetCheck() != 0)
//获取BMP单选按钮的状态 - {
- //创建文件保存对话框
- CFileDialog fDlg(FALSE,"bmp","bmp_001",OFN_HIDEREADONLY
- | OFN_OVERWRITEPROMPT,"bmp|*.bmp",this);
- if(fDlg.DoModal() == IDOK)
- {
- CString fName = fDlg.GetPathName();
//获得文件的保存路径 - VCASaveAsBmpFile(CPreView::
m_CurIndex,fName); //保存为BMP文件 - }
- }
- else
- {
- //创建文件保存对话框
- CFileDialog fDlg(FALSE,"jpg","jpg_001",OFN_HIDEREADONLY
- | OFN_OVERWRITEPROMPT,"JPG|*.JPG",this);
- if(fDlg.DoModal() == IDOK)
- {
- CString fName = fDlg.GetPathName();
//获得文件的保存路径 - VCASaveAsJpegFile(CPreView::m_
CurIndex,fName); //保存为JPG文件 - }
- }
- }
- else
- {
- MessageBox("当前选择的图像不能预览!","提示");
- }
- }
- }