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

📄 fourwaydlg.cpp

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

#include "stdafx.h"
#include "multicard.h"
#include "FourwayDlg.h"

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

static int g_cam[4] = {0, 1, 2, 3};

/////////////////////////////////////////////////////////////////////////////
// CFourwayDlg dialog


CFourwayDlg::CFourwayDlg(int iCardID, CWnd* pParent /*=NULL*/)
	: CDialog(CFourwayDlg::IDD, pParent),
	m_iCardID(iCardID)
{
	//{{AFX_DATA_INIT(CFourwayDlg)
	m_cam = 0;
	m_way = 0;
	m_bri = 0;
	m_con = 0;
	m_hue = 0;
	m_sta = 0;
	//}}AFX_DATA_INIT
}


void CFourwayDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFourwayDlg)
	DDX_Radio(pDX, IDC_CAM_RADIO1, m_cam);
	DDX_Radio(pDX, IDC_WAY_RADIO1, m_way);
	DDX_Slider(pDX, IDC_FW_SLIDER_BRI, m_bri);
	DDX_Slider(pDX, IDC_FW_SLIDER_CON, m_con);
	DDX_Slider(pDX, IDC_FW_SLIDER_HUE, m_hue);
	DDX_Slider(pDX, IDC_FW_SLIDER_STA, m_sta);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFourwayDlg, CDialog)
	//{{AFX_MSG_MAP(CFourwayDlg)
	ON_WM_HSCROLL()
	ON_BN_CLICKED(IDC_FW_BTN_DEFAULT, OnBtnDefault)
	//}}AFX_MSG_MAP
	ON_CONTROL_RANGE(BN_CLICKED, IDC_WAY_RADIO1, IDC_WAY_RADIO4, OnWayChanged)
	ON_CONTROL_RANGE(BN_CLICKED, IDC_CAM_RADIO1, IDC_CAM_NONE, OnCamChanged)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFourwayDlg message handlers

BOOL CFourwayDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	HRESULT hr;
	long source;
	char szCaption[100];

	//Caption
	sprintf(szCaption, "%d号卡:调节四路卡的特性", m_iCardID);
	SetWindowText(szCaption);

	//Way
	hr = DSStream_WhatInPinRouteToOutPin(m_iCardID, 0, &source);
	if(SUCCEEDED(hr) && source>=0 && source<=4)
	{
		if(source==4)
		{
			for(int i=0; i<4; i++)
				GetDlgItem(IDC_WAY_RADIO1+i)->EnableWindow();
			m_way = 0;
		}
		else
		{
			GetDlgItem(IDC_WAY_RADIO1+source)->EnableWindow();
			m_way = source;
		}
	}
	UpdateData(FALSE);
	GetDlgItem(IDC_WAY_RADIO1+m_way)->SetFocus();
	m_cam = g_cam[m_way];

	OnWayChanged(m_way);

	return FALSE;
}

void CFourwayDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	UpdateData(TRUE);

	int pos = ((CSliderCtrl*)pScrollBar)->GetPos();

	if(pScrollBar->m_hWnd == GetDlgItem(IDC_FW_SLIDER_BRI)->m_hWnd)
	{
		DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Brightness, pos);
		SetDlgItemInt(IDC_FW_TEXT_BRI, pos, FALSE);
	}
	else if(pScrollBar->m_hWnd == GetDlgItem(IDC_FW_SLIDER_CON)->m_hWnd)
	{
		DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Contrast, pos);
		SetDlgItemInt(IDC_FW_TEXT_CON, pos, FALSE);
	}
	else if(pScrollBar->m_hWnd == GetDlgItem(IDC_FW_SLIDER_HUE)->m_hWnd)
	{
		DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Hue, pos);
		SetDlgItemInt(IDC_FW_TEXT_HUE, pos, FALSE);
	}
	else if(pScrollBar->m_hWnd == GetDlgItem(IDC_FW_SLIDER_STA)->m_hWnd)
	{
		DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Saturation, pos);
		SetDlgItemInt(IDC_FW_TEXT_STA, pos, FALSE);
	}
	
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CFourwayDlg::OnWayChanged( UINT nID )
{
	UpdateData();

	//Cam
	m_cam = g_cam[m_way];

	HRESULT hr;
	//Value
	((CSliderCtrl*)GetDlgItem(IDC_FW_SLIDER_BRI))->SetRange(0, 10000);
	hr = DSStream_GetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Brightness, (long*)&m_bri);
	if(SUCCEEDED(hr))
		SetDlgItemInt(IDC_FW_TEXT_BRI, m_bri, FALSE);
	
	((CSliderCtrl*)GetDlgItem(IDC_FW_SLIDER_CON))->SetRange(0, 10000);
	hr = DSStream_GetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Contrast, (long*)&m_con);
	if(SUCCEEDED(hr))
		SetDlgItemInt(IDC_FW_TEXT_CON, m_con, FALSE);
	
	((CSliderCtrl*)GetDlgItem(IDC_FW_SLIDER_HUE))->SetRange(0, 10000);
	hr = DSStream_GetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Hue, (long*)&m_hue);
	if(SUCCEEDED(hr))
		SetDlgItemInt(IDC_FW_TEXT_HUE, m_hue, FALSE);
	
	((CSliderCtrl*)GetDlgItem(IDC_FW_SLIDER_STA))->SetRange(0, 10000);
	hr = DSStream_GetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Saturation, (long*)&m_sta);
	if(SUCCEEDED(hr))
		SetDlgItemInt(IDC_FW_TEXT_STA, m_sta, FALSE);

	UpdateData(FALSE);
}

void CFourwayDlg::OnCamChanged( UINT nID )
{
	UpdateData();

	HRESULT hr = DSStream_ChooseCamera_Ex(m_iCardID, m_way, m_cam);
	if(SUCCEEDED(hr))
	{
		g_cam[m_way] = m_cam;
	}
	else
	{
		m_cam = g_cam[m_way];
		UpdateData(FALSE);
		MessageBox("矩阵调节失败!");
	}
}

void CFourwayDlg::OnBtnDefault() 
{
	UpdateData();

	DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Brightness, 5000);
	DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Contrast, 5000);
	DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Hue, 5000);
	DSStream_SetVideoPropertyValue_Ex(m_iCardID, m_way, VideoProperty_Saturation, 5000);

	OnWayChanged(m_way);
}

⌨️ 快捷键说明

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