1.5 主窗体设计(7)
(25)处理"显卡类型"按钮的单击事件,设置显卡类型,并将设置结果保存到INI文件中。代码如下:
- void CCaptureDlg::OnSetting()
- {
- CButton* pVGAButton = (CButton*)GetDlgItem(IDC_VGA);
- int sel = pVGAButton->GetCheck();
//获得VGA单选按钮的状态 - if(sel)
- {
- WritePrivateProfileString("显卡设置","
类型","VGA","./syssetting.ini"); //将数据写入INI文件 - }
- else
- {
- WritePrivateProfileString("显卡设置",
"类型","PCI","./syssetting.ini"); //将数据写入INI文件 - }
- MessageBox("要使显卡设置生效,需要重新启动应用程序!","提示");
- }
(26)处理对话框的WM_WINDOWPOSCHANGED消息,当对话框位置改变时,更新视频预览窗口的位置。代码如下:
- void CCaptureDlg::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos)
- {
- CDialog::OnWindowPosChanged(lpwndpos);
- for (UINT i = 0 ; i< m_DevNum; i++)
//根据芯片数进行循环 - {
- if (m_Frame.m_pList[i].m_ShowImage)
//判断是否显示图片 - {
- if (m_Frame.m_pList[i].m_Stop==psStop)
- {
- VCAStopVideoPreview(i);
//停止预览 - VCAUpdateOverlayWnd(m_Frame.GetSafeHwnd());
//更新视频预览窗口 - }
- else if (m_Frame.m_pList[i].m_Stop==psPreview)
- {
- m_Frame.m_pList[i].Invalidate();
//刷新窗口 - //更新视频预览窗口
- VCAUpdateOverlayWnd(m_Frame.m_hWnd);
- VCAUpdateVideoPreview(i,m_Frame.m_pList[i].m_hWnd);
- }
- }
- }
- }
(27)处理"录像"按钮的单击事件,代码如下:
- void CCaptureDlg::OnKinescope()
- {
- if(!m_Kinescope)
//判断是否录像 - {
- if(CPreView::m_CurIndex != -1)
- {
- //创建文件保存对话框
- CFileDialog fDlg(FALSE,"avi","avi_001",OFN_HIDEREADONLY
- | OFN_OVERWRITEPROMPT,"AVI|*.avi",this);
- if (fDlg.DoModal()==IDOK)
- {
- m_Kinescope = TRUE;
- CString file = fDlg.GetPathName();
//获得文件保存路径 - //设置MPEG压缩的关键帧间隔,必须大于等于帧率
- VCASetKeyFrmInterval(CPreView::m_CurIndex,250);
- //设置MPEG压缩的位率,范围为56Kbps ~ 10Mbps
- VCASetBitRate(CPreView::m_CurIndex,256);
- //设置视频捕获帧率,bFrameRateReduction参数为保留参数
- //PAL显示帧率始终为25,NTSC显示帧率始终为30
- //PAL捕获帧率最大为25,NTSC捕获帧率最大为30
- VCASetVidCapFrameRate(CPreView::m_CurIndex,25);
- //设置视频捕获尺寸
- VCASetVidCapSize(CPreView::m_CurIndex,320,240);
- //设置MPEG4_XVID压缩的质量
- VCASetXVIDQuality(CPreView::m_CurIndex,10,3);
- //设置MPEG4_XVID压缩模式
- VCASetXVIDCompressMode(CPreView::m_CurIndex,XVID_VBR_MODE);
- BOOL ret = VCAStartVideoCapture
(CPreView::m_CurIndex,CAP_ORIGIN_MPEG4_STREAM, - MPEG4_AVIFILE_CALLBACK ,file); //开始视频捕获
- GetDlgItem(IDC_KINESCOPE)->SetWindowText("停止录像");
- }
- }
- }
- else
- {
- m_Kinescope = FALSE;
- GetDlgItem(IDC_KINESCOPE)->SetWindowText("录像");
- VCAStopVideoCapture(CPreView::m_CurIndex);
//停止视频捕获 - }
- }