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

📄 choosevideocompressordlg.cpp

📁 基于SDK的图像采集程序
💻 CPP
字号:
// ChooseVideoCompressorDlg.cpp : implementation file
//

#include "stdafx.h"
#include "multicard.h"
#include "ChooseVideoCompressorDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChooseVideoCompressorDlg dialog


CChooseVideoCompressorDlg::CChooseVideoCompressorDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CChooseVideoCompressorDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CChooseVideoCompressorDlg)
	m_iQuality = 0;
	//}}AFX_DATA_INIT
	m_szCompName[0] = '\0';
}


void CChooseVideoCompressorDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CChooseVideoCompressorDlg)
	DDX_Control(pDX, IDC_SLIDER_QUALITY, m_quality);
	DDX_Control(pDX, IDC_LIST_COMPRESSOR, m_list);
	DDX_Slider(pDX, IDC_SLIDER_QUALITY, m_iQuality);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChooseVideoCompressorDlg, CDialog)
	//{{AFX_MSG_MAP(CChooseVideoCompressorDlg)
	ON_WM_HSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChooseVideoCompressorDlg message handlers

BOOL CChooseVideoCompressorDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_list.ResetContent();

	VideoCompressorInfo * pInfo;
	int num;
	HRESULT hr = DSStream_EnumVideoCompressor(NULL, &num);
	if(SUCCEEDED(hr) && num>0)
	{
		pInfo = new VideoCompressorInfo[num];
		if(pInfo)
		{
			hr = DSStream_EnumVideoCompressor(pInfo, &num);
			if(SUCCEEDED(hr))
			{
				for(int i=num-1; i>=0; i--)
				{
					m_list.InsertString(0, pInfo[i].szName);
				}
			}
			delete [] pInfo;
		}
	}

	m_list.InsertString(0, "<<不使用任何视频压缩算法>>");

	//查看当前使用的是何种视频压缩算法
	char szCompName[80];
	char szList[80];
	hr = DSStream_GetCurrentVideoCompressor(szCompName);
	if(SUCCEEDED(hr) && strlen(szCompName))
	{
		num = m_list.GetCount();
		for(int i=0; i<num; i++)
		{
			szList[0] = '\0';
			m_list.GetText(i, szList);
			if(strcmp(szCompName, szList)==0)
			{
				m_list.SetCurSel(i);
				break;
			}
		}
	}

	//压缩质量
	m_quality.SetRange(0, 100);
	int iQuality;
	hr = DSStream_GetVideoCompressorQuality(&iQuality);
	if(SUCCEEDED(hr))
	{
		m_quality.SetPos(iQuality);
		SetDlgItemInt(IDC_STATIC_QUALITY, iQuality);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CChooseVideoCompressorDlg::OnOK() 
{
	// TODO: Add extra validation here
	int pos = m_list.GetCurSel();
	if(pos >= 0)
		m_list.GetText(pos, m_szCompName);

	CDialog::OnOK();
}

void CChooseVideoCompressorDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	if(pScrollBar->m_hWnd == m_quality.m_hWnd)
	{
		SetDlgItemInt(IDC_STATIC_QUALITY, m_quality.GetPos());
	}

	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

⌨️ 快捷键说明

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