设为首页 加入收藏

TOP

1.5 主窗体设计(6)
2013-10-07 13:26:59 来源: 作者: 【 】 浏览:68
Tags:1.5 窗体 设计

1.5  主窗体设计(6)

(22)处理主对话框的WM_TIMER消息,判断某一路是否有视频信号。代码如下:

  1. void CCaptureDlg::OnTimer(UINT nIDEvent)   
  2. {  
  3.     //判断某一路是否有信号  
  4.     eFieldFrequency frequency;  
  5.     for (int i=0;i<m_DevNum;i++)  
  6.     {  
  7.         VCAGetVidFieldFrq(i,frequency);           
    //获得视频源输入频率  
  8.         if(frequency == FIELD_FREQ_0HZ)                     //无信号  
  9.         {  
  10.             if (m_Frame.m_pList[i].m_ShowImage == TRUE)  
  11.             {  
  12.                 m_Frame.m_pList[i].m_ShowImage = FALSE;   
  13.                 m_Frame.m_pList[i].Invalidate();        
    //更新预览窗口  
  14.             }  
  15.         }  
  16.         else  
  17.         {  
  18.             if(m_Frame.m_pList[i].m_ShowImage == FALSE) 
    //判断是否显示图片  
  19.             {  
  20.                 m_Frame.m_pList[i].m_ShowImage = TRUE;  
  21.                 m_Frame.m_pList[i].Invalidate();         
    //更新预览窗口  
  22.                 if(m_Frame.m_pList[i].m_Stop == psPreview)  
  23.                 {  
  24.                     //更新视频预览窗口  
  25.                     VCAUpdateOverlayWnd(m_Frame.m_hWnd);  
  26.                     VCAUpdateVideoPreview(i,m_Frame.m_pList[i].m_hWnd);   
  27.                 }  
  28.             }  
  29.         }  
  30.     }  
  31.     CDialog::OnTimer(nIDEvent);  
  32. }  

(23)处理主对话框的WM_SIZE消息,在对话框大小改变时调整视频显示窗口的父窗口大小,从而间接调整预览窗口。代码如下:

  1. void CCaptureDlg::OnSize(UINT nType, int cx, int cy)   
  2. {  
  3.     CDialog::OnSize(nType, cx, cy);   
  4.     CRect rc,frc;  
  5.     GetClientRect(rc);                         
    //获取窗口的客户区域  
  6.     //设置父窗口的大小  
  7.     m_Frame.SetWindowPos(&wndTop,0,0,rc.Width()-
    180,rc.Height()-10,SWP_SHOWWINDOW);  
  8.     m_Frame.GetClientRect(frc);                  
    //获得父窗口的客户区域  
  9.     m_Frame.SetWindowPos(NULL,0,7,frc.Width(),rc.Height()-8,0);  
  10.     m_Frame.ShowWindow(SW_SHOW);                        //显示父窗口  
  11. }  

(24)处理"快照"按钮的单击事件,截取当前预览图像,并根据选择的类型保存成相应的文件。代码如下:

  1. void CCaptureDlg::OnSnapshot()   
  2. {  
  3.     if(CPreView::m_CurIndex != -1)             
    //判断是否有预览窗口  
  4.     {  
  5.         if(m_Frame.m_pList[CPreView::m_CurIndex].m_ShowImage)   
  6.         {  
  7.             CButton* pBmpButton = (CButton*)GetDlgItem(IDC_BMP);  
  8.             if(pBmpButton->GetCheck() != 0)         
    //获取BMP单选按钮的状态  
  9.             {  
  10.                 //创建文件保存对话框  
  11.                 CFileDialog fDlg(FALSE,"bmp","bmp_001",OFN_HIDEREADONLY   
  12.                     | OFN_OVERWRITEPROMPT,"bmp|*.bmp",this);   
  13.                 if(fDlg.DoModal() == IDOK)  
  14.                 {  
  15.                     CString fName = fDlg.GetPathName(); 
    //获得文件的保存路径  
  16.                     VCASaveAsBmpFile(CPreView::
    m_CurIndex,fName);       //保存为BMP文件  
  17.                 }  
  18.             }  
  19.             else  
  20.             {  
  21.                 //创建文件保存对话框  
  22.                 CFileDialog fDlg(FALSE,"jpg","jpg_001",OFN_HIDEREADONLY   
  23.                     | OFN_OVERWRITEPROMPT,"JPG|*.JPG",this);   
  24.                 if(fDlg.DoModal() == IDOK)  
  25.                 {  
  26.                     CString fName = fDlg.GetPathName(); 
    //获得文件的保存路径  
  27.                     VCASaveAsJpegFile(CPreView::m_
    CurIndex,fName);      //保存为JPG文件  
  28.                 }         
  29.             }  
  30.         }  
  31.         else  
  32.         {  
  33.             MessageBox("当前选择的图像不能预览!","提示");  
  34.         }  
  35.     }  
  36. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5 主窗体设计(7) 下一篇1.4 公共模块设计(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: