?? 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_COMBO_SUBTYPE, m_comboSubType);
DDX_Control(pDX, IDC_COMBO_STANDARD, m_comboStandard);
DDX_Control(pDX, IDC_COMBO_VS, m_comboVideoSource);
DDX_Control(pDX, IDC_SLIDER_SATURATION, m_sliderSaturation);
DDX_Control(pDX, IDC_SLIDER_HUE, m_sliderHue);
DDX_Control(pDX, IDC_SLIDER_CONTRAST, m_sliderContrast);
DDX_Control(pDX, IDC_SLIDER_BRIGHTNESS, m_sliderBrightness);
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_SETTO_DEFAULT, OnSettoDefault)
ON_WM_HSCROLL()
ON_CBN_SELCHANGE(IDC_COMBO_VS, OnSelchangeComboVs)
ON_CBN_SELCHANGE(IDC_COMBO_STANDARD, OnSelchangeComboStandard)
ON_BN_CLICKED(IDC_BUTTON_SETVIDEOINFO, OnButtonSetVideoInfo)
ON_WM_TIMER()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers
BOOL CConfigDlg::OnInitDialog()
{
CDialog::OnInitDialog();
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; i<m_comboStandard.GetCount(); i++)
{
if(vs==(long)m_comboStandard.GetItemData(i))
{
m_comboStandard.SetCurSel(i);
break;
}
}
}
//======= Add for ver5.2, begin ===============
GetVideoInfo();
SetTimer(0, 200, NULL);
//======= Add for ver5.2, end =================
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CConfigDlg::OnSettoDefault()
{
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);
}
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()
{
int pos;
pos = m_comboVideoSource.GetCurSel();
DSStream_RouteInPinToOutPin(m_iCardID, pos, 0);
}
void CConfigDlg::OnSelchangeComboStandard()
{
int pos;
long data;
pos = m_comboStandard.GetCurSel();
data = m_comboStandard.GetItemData(pos);
DSStream_SetVideoStandard(m_iCardID, (VideoStandard)data);
}
//======= Add for ver5.2, begin ===============
void CConfigDlg::OnButtonSetVideoInfo()
{
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::GetVideoInfo()
{
VIDEOSTREAMINFO vsi;
HRESULT hr;
hr = DSStream_GetVideoInfo(m_iCardID, &vsi, PREVIEW);
if(SUCCEEDED(hr))
{
m_comboSubType.SetCurSel(int(vsi.subtype));
m_iStreamWidth = vsi.bmiHeader.biWidth;
m_iStreamHeight= vsi.bmiHeader.biHeight;
UpdateData(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_SETVIDEOINFO)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_WIDTH)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_HEIGHT)->EnableWindow(FALSE);
m_comboSubType.EnableWindow(FALSE);
}
}
//檢測視頻源是否有信號輸入
void CConfigDlg::OnTimer(UINT nIDEvent)
{
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);
}
void CConfigDlg::OnDestroy()
{
KillTimer(0);
CDialog::OnDestroy();
}
//======= Add for ver5.2, end =================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -