www.pudn.com > VideoCapture.rar > ConfigDlg.cpp


// ConfigDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Multicard.h" 
#include "ConfigDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CConfigDlg dialog 
 
 
CConfigDlg::CConfigDlg(int iCardID, CWnd* pParent /*=NULL*/) 
	: CDialog(CConfigDlg::IDD, pParent), 
	m_iCardID(iCardID) 
{ 
	//{{AFX_DATA_INIT(CConfigDlg) 
	m_iStreamHeight = 0; 
	m_iStreamWidth = 0; 
	//}}AFX_DATA_INIT 
} 
 
 
void CConfigDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CConfigDlg) 
	DDX_Control(pDX, IDC_SLIDER_BRIGHTNESS, m_sliderBrightness); 
	DDX_Control(pDX, IDC_SLIDER_CONTRAST, m_sliderContrast); 
	DDX_Control(pDX, IDC_SLIDER_HUE, m_sliderHue); 
	DDX_Control(pDX, IDC_SLIDER_SATURATION, m_sliderSaturation); 
	DDX_Control(pDX, IDC_COMBO_VS, m_comboVideoSource); 
	DDX_Control(pDX, IDC_COMBO_STANDARD, m_comboStandard); 
	DDX_Control(pDX, IDC_COMBO_SUBTYPE, m_comboSubType); 
	DDX_Text(pDX, IDC_EDIT_HEIGHT, m_iStreamHeight); 
	DDV_MinMaxUInt(pDX, m_iStreamHeight, 60, 576); 
	DDX_Text(pDX, IDC_EDIT_WIDTH, m_iStreamWidth); 
	DDV_MinMaxUInt(pDX, m_iStreamWidth, 80, 720); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog) 
	//{{AFX_MSG_MAP(CConfigDlg) 
	ON_BN_CLICKED(IDC_BUTTON_SETVIDEOINFO, OnButtonSetVideoInfo) 
	ON_WM_TIMER() 
	ON_WM_DESTROY() 
	ON_WM_HSCROLL() 
	ON_CBN_SELCHANGE(IDC_COMBO_VS, OnSelchangeComboVs) 
	ON_CBN_SELCHANGE(IDC_COMBO_STANDARD, OnSelchangeComboStandard) 
	ON_BN_CLICKED(IDC_SETTO_DEFAULT, OnSettoDefault) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CConfigDlg message handlers 
 
BOOL CConfigDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	char szCaption[20]; 
	sprintf(szCaption, "%d号卡: 配置", m_iCardID); 
	SetWindowText(szCaption); 
 
	// TODO: Add extra initialization here 
	VIDEOPROPERTYRANGE vpr; 
	HRESULT hr; 
 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Brightness, &vpr); 
	m_sliderBrightness.SetRange(vpr.lMin, vpr.lMax, TRUE); 
	m_sliderBrightness.SetPos(vpr.lValue); 
	SetDlgItemInt(IDC_STATIC_BRIGHTNESS, vpr.lValue, FALSE); 
	 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Contrast, &vpr); 
	m_sliderContrast.SetRange(vpr.lMin, vpr.lMax, TRUE); 
	m_sliderContrast.SetPos(vpr.lValue); 
	SetDlgItemInt(IDC_STATIC_CONTRAST, vpr.lValue, FALSE); 
 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Hue, &vpr); 
	m_sliderHue.SetRange(vpr.lMin, vpr.lMax, TRUE); 
	m_sliderHue.SetPos(vpr.lValue); 
	SetDlgItemInt(IDC_STATIC_HUE, vpr.lValue, FALSE); 
 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Saturation, &vpr); 
	m_sliderSaturation.SetRange(vpr.lMin, vpr.lMax, TRUE); 
	m_sliderSaturation.SetPos(vpr.lValue); 
	SetDlgItemInt(IDC_STATIC_SATURATION, vpr.lValue, FALSE); 
 
	long pin; 
	hr = DSStream_WhatInPinRouteToOutPin(m_iCardID, 0, &pin); 
	if(SUCCEEDED(hr)) 
		m_comboVideoSource.SetCurSel(pin); 
	else 
		m_comboVideoSource.EnableWindow(FALSE); 
 
	VideoStandard vs; 
	long avs; 
	int i = 0; 
	hr = DSStream_GetVideoStandard(m_iCardID, &vs, &avs); 
	if(FAILED(hr)) 
		m_comboStandard.EnableWindow(FALSE); 
	else 
	{ 
	     if(avs & VideoStandard_NTSC_M ) 
		 { 
			 m_comboStandard.InsertString(0, "NTSC_M"); 
			 m_comboStandard.SetItemData(0, VideoStandard_NTSC_M); 
		 } 
	     if(avs & VideoStandard_NTSC_M_J ) 
		 { 
			 m_comboStandard.InsertString(0, "NTSC_M_J"); 
			 m_comboStandard.SetItemData(0, VideoStandard_NTSC_M_J); 
		 } 
	     if(avs & VideoStandard_NTSC_433 ) 
		 { 
			 m_comboStandard.InsertString(0, "NTSC_433"); 
			 m_comboStandard.SetItemData(0, VideoStandard_NTSC_433); 
		 } 
	     if(avs & VideoStandard_PAL_B ) 
		 { 
			 m_comboStandard.InsertString(0, "PAL_B"); 
			 m_comboStandard.SetItemData(0, VideoStandard_PAL_B); 
		 } 
	     if(avs & VideoStandard_PAL_D ) 
		 { 
			 m_comboStandard.InsertString(0, "PAL_D"); 
			 m_comboStandard.SetItemData(0, VideoStandard_PAL_D); 
		 } 
	     if(avs & VideoStandard_PAL_H ) 
		 { 
			 m_comboStandard.InsertString(0, "PAL_H"); 
			 m_comboStandard.SetItemData(0, VideoStandard_PAL_H); 
		 } 
	     if(avs & VideoStandard_PAL_I ) 
		 { 
			 m_comboStandard.InsertString(0, "PAL_I"); 
			 m_comboStandard.SetItemData(0, VideoStandard_PAL_I); 
		 } 
	     if(avs & VideoStandard_PAL_M ) 
		 { 
			 m_comboStandard.InsertString(0, "PAL_M"); 
			 m_comboStandard.SetItemData(0, VideoStandard_PAL_M); 
		 } 
	     if(avs & VideoStandard_PAL_N ) 
		 { 
			 m_comboStandard.InsertString(0, "PAL_N"); 
			 m_comboStandard.SetItemData(0, VideoStandard_PAL_N); 
		 } 
	     if(avs & VideoStandard_PAL_60 ) 
		 { 
			 m_comboStandard.InsertString(0, "PAL_60"); 
			 m_comboStandard.SetItemData(0, VideoStandard_PAL_60); 
		 } 
	     if(avs & VideoStandard_SECAM_B ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_B"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_B); 
		 } 
	     if(avs & VideoStandard_SECAM_D ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_D"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_D); 
		 } 
	     if(avs & VideoStandard_SECAM_G ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_G"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_G); 
		 } 
	     if(avs & VideoStandard_SECAM_H ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_H"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_H); 
		 } 
	     if(avs & VideoStandard_SECAM_K ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_K"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_K); 
		 } 
	     if(avs & VideoStandard_SECAM_K1 ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_K1"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_K1); 
		 } 
	     if(avs & VideoStandard_SECAM_L ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_L"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_L); 
		 } 
	     if(avs & VideoStandard_SECAM_L1 ) 
		 { 
			 m_comboStandard.InsertString(0, "SECAM_L1"); 
			 m_comboStandard.SetItemData(0, VideoStandard_SECAM_L1); 
		 } 
		 for(int i=0; iEnableWindow(FALSE); 
		GetDlgItem(IDC_EDIT_WIDTH)->EnableWindow(FALSE); 
		GetDlgItem(IDC_EDIT_HEIGHT)->EnableWindow(FALSE); 
		m_comboSubType.EnableWindow(FALSE); 
	} 
 
} 
 
void CConfigDlg::OnButtonSetVideoInfo()  
{ 
	// TODO: Add your control notification handler code here 
	VIDEOSTREAMINFO vsi; 
	HRESULT hr; 
	 
	hr = DSStream_GetVideoInfo(m_iCardID, &vsi, PREVIEW); 
	if(SUCCEEDED(hr)) 
	{ 
		UpdateData(); 
		vsi.subtype = (VideoSubType) m_comboSubType.GetCurSel(); 
		vsi.bmiHeader.biWidth = m_iStreamWidth; 
		vsi.bmiHeader.biHeight= m_iStreamHeight; 
		 
		DSStream_DisconnectPin(m_iCardID, PREVIEW); 
		DSStream_SetVideoInfo(m_iCardID, vsi, PREVIEW); 
		DSStream_ConnectPin(m_iCardID, PREVIEW); 
		 
		BOOL ok; 
		DSStream_IsConnected(m_iCardID, &ok); 
		if(!ok) 
		{ 
			char sz[255]; 
			char subtype[20]; 
			m_comboSubType.GetLBText( m_comboSubType.GetCurSel(), subtype ); 
			sprintf(sz, "设置视频格式错误:\n可能是当前的显示方式不支持%s格式", subtype); 
			MessageBox(sz, "错误"); 
		} 
	} 
	 
	GetVideoInfo(); 
	 
	::SendMessage(::GetParent(m_hWnd), WM_COMMAND, ID_NORMALSIZE, NULL); 
	 
} 
 
void CConfigDlg::OnTimer(UINT nIDEvent)  
{ 
	// TODO: Add your message handler code here and/or call default 
	BOOL bSignalLocked = FALSE; 
	HRESULT hr = DSStream_IsVideoSignalLocked(m_iCardID, &bSignalLocked); 
	if( SUCCEEDED(hr) && bSignalLocked ) 
		SetDlgItemText(IDC_STATIC_SIGNAL, "是"); 
	else 
		SetDlgItemText(IDC_STATIC_SIGNAL, "否"); 
	 
	//CDialog::OnTimer(nIDEvent); 
	 
	CDialog::OnTimer(nIDEvent); 
} 
 
void CConfigDlg::OnDestroy()  
{ 
		KillTimer(0); 
	CDialog::OnDestroy(); 
	 
	// TODO: Add your message handler code here 
	 
	 
} 
 
void CConfigDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)  
{ 
	// TODO: Add your message handler code here and/or call default 
	VIDEOPROPERTYRANGE vpr; 
	HRESULT hr; 
	int pos; 
	 
	if(pScrollBar->m_hWnd == m_sliderBrightness.m_hWnd) 
	{ 
		pos = m_sliderBrightness.GetPos(); 
		DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Brightness, pos); 
		hr = DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Brightness, &vpr); 
		if(SUCCEEDED(hr)) 
			SetDlgItemInt(IDC_STATIC_BRIGHTNESS, vpr.lValue, FALSE); 
	} 
	else if(pScrollBar->m_hWnd == m_sliderContrast.m_hWnd) 
	{ 
		pos = m_sliderContrast.GetPos(); 
		DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Contrast, pos); 
		hr = DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Contrast, &vpr); 
		if(SUCCEEDED(hr)) 
			SetDlgItemInt(IDC_STATIC_CONTRAST, vpr.lValue, FALSE); 
	} 
	else if(pScrollBar->m_hWnd == m_sliderHue.m_hWnd) 
	{ 
		pos = m_sliderHue.GetPos(); 
		DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Hue, pos); 
		hr = DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Hue, &vpr); 
		if(SUCCEEDED(hr)) 
			SetDlgItemInt(IDC_STATIC_HUE, vpr.lValue, FALSE); 
	} 
	else if(pScrollBar->m_hWnd == m_sliderSaturation.m_hWnd) 
	{ 
		pos = m_sliderSaturation.GetPos(); 
		DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Saturation, pos); 
		hr = DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Saturation, &vpr); 
		if(SUCCEEDED(hr)) 
			SetDlgItemInt(IDC_STATIC_SATURATION, vpr.lValue, FALSE); 
	} 
	 
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar); 
} 
 
void CConfigDlg::OnSelchangeComboVs()  
{ 
	// TODO: Add your control notification handler code here 
	int pos; 
	pos = m_comboVideoSource.GetCurSel(); 
	DSStream_RouteInPinToOutPin(m_iCardID, pos, 0); 
	 
} 
 
void CConfigDlg::OnSelchangeComboStandard()  
{ 
	// TODO: Add your control notification handler code here 
	int pos; 
	long data; 
	pos = m_comboStandard.GetCurSel(); 
	data = m_comboStandard.GetItemData(pos); 
	DSStream_SetVideoStandard(m_iCardID, (VideoStandard)data); 
	 
} 
 
void CConfigDlg::OnSettoDefault()  
{ 
	// TODO: Add your control notification handler code here 
	VIDEOPROPERTYRANGE vpr; 
	 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Brightness, &vpr); 
	DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Brightness, vpr.lDefault); 
	m_sliderBrightness.SetPos(vpr.lDefault); 
	SetDlgItemInt(IDC_STATIC_BRIGHTNESS, vpr.lValue, FALSE); 
	 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Contrast, &vpr); 
	DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Contrast, vpr.lDefault); 
	m_sliderContrast.SetPos(vpr.lDefault); 
	SetDlgItemInt(IDC_STATIC_CONTRAST, vpr.lValue, FALSE); 
	 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Hue, &vpr); 
	DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Hue, vpr.lDefault); 
	m_sliderHue.SetPos(vpr.lDefault); 
	SetDlgItemInt(IDC_STATIC_HUE, vpr.lValue, FALSE); 
	 
	DSStream_GetVideoPropertyValue(m_iCardID, VideoProperty_Saturation, &vpr); 
	DSStream_SetVideoPropertyValue(m_iCardID, VideoProperty_Saturation, vpr.lDefault); 
	m_sliderSaturation.SetPos(vpr.lDefault); 
	SetDlgItemInt(IDC_STATIC_SATURATION, vpr.lValue, FALSE); 
	 
}