📄 dlcwbdemodlg.cpp
字号:
#include "stdafx.h"
#include "DLCWBDEMO.h"
#include "DLCWBDEMODlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
VOID CALLBACK FRAMECALLBACK( LPVOID lpContext, LPVOID lpBuf )
{
CDLCWBDEMODlg *pDlg = (CDLCWBDEMODlg*)lpContext;
OutputDebugString( " Frame Call back\n " );
// Sleep( 1000 );
}
CDLCWBDEMODlg::CDLCWBDEMODlg(CWnd* pParent /*=NULL*/)
: CDialog(CDLCWBDEMODlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDLCWBDEMODlg)
m_bPlay = FALSE;
m_bCapture = FALSE;
m_ShowType = (int)DS_SHOW;
m_strMessage = _T("button down message");
//}}AFX_DATA_INIT
m_hDevice = NULL;
}
void CDLCWBDEMODlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDLCWBDEMODlg)
DDX_Control(pDX, IDC_STATIC_VIDEO, m_staticVideo);
DDX_Control(pDX, IDC_SLIDER_COLOR, m_sliderColor);
DDX_Control(pDX, IDC_COMBO_COLOR, m_comboColor);
DDX_Control(pDX, IDC_COMBO_SIZE, m_comboSize);
DDX_Check(pDX, IDC_CHECK_PLAY, m_bPlay);
DDX_Check(pDX, IDC_CHECK_AVI, m_bCapture);
DDX_Radio(pDX, IDC_RADIO1, m_ShowType);
DDX_Text(pDX, IDC_STATIC_MESSAGE, m_strMessage);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDLCWBDEMODlg, CDialog)
//{{AFX_MSG_MAP(CDLCWBDEMODlg)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_CHECK_PLAY, OnCheckPlay)
ON_CBN_SELCHANGE(IDC_COMBO_SIZE, OnSelchangeComboSize)
ON_CBN_SELCHANGE(IDC_COMBO_COLOR, OnSelchangeComboColor)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_COLOR, OnReleasedcaptureSliderColor)
ON_BN_CLICKED(IDC_BUTTON_CAP, OnButtonCap)
ON_BN_CLICKED(IDC_CHECK_AVI, OnCheckAvi)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_BUTTON_PROP, OnButtonProp)
ON_BN_CLICKED(IDC_BUTTON_LOADBG, OnButtonLoadbg)
ON_MESSAGE( WM_CAPTURE, OnReceivedMessage ) // 绿色按钮按下
ON_MESSAGE( WM_EXITBTNDOWN, OnExitButtonDown ) // 红色按钮按下
ON_WM_SYSCOMMAND()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_CAPTOBUF, OnButtonCaptobuf)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CDLCWBDEMODlg::OnPaint()
{
CDialog::OnPaint();
}
/////////////////////////////////////////////////////////////////////////////
LRESULT CDLCWBDEMODlg::OnReceivedMessage(WPARAM WParam, LPARAM LParam)
{
m_strMessage.Format("%s", _T( "green button down!\n") );
UpdateData( FALSE );
Sleep( 1000 );
m_strMessage = _T("");
UpdateData( FALSE );
return 0;
static nNum;
CString strFN;
strFN.Format( "Capture%d.bmp", nNum++ );
DL_CaptureToBmp ( m_hDevice, strFN );
}
LRESULT CDLCWBDEMODlg::OnExitButtonDown(WPARAM WParam, LPARAM LParam)
{
m_strMessage.Format("%s", _T( "red button down!\n") );
UpdateData( FALSE );
Sleep( 1000 );
m_strMessage = _T("");
UpdateData( FALSE );
return 0;
}
BOOL CDLCWBDEMODlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_comboSize.SetCurSel( 2 );
m_comboColor.SetCurSel( 0 );
if( DL_SUCCESS != DL_Initial( &m_hDevice, m_hWnd ) ) // 初始化设备
{
DL_UnInitial( &m_hDevice );
MessageBox( "Fail" );
m_hDevice = NULL;
}
DL_SetFrameCallBack( m_hDevice, FRAMECALLBACK, this );
return TRUE;
}
BOOL CDLCWBDEMODlg::DestroyWindow()
{
Play( FALSE, GDI_SHOW );
DL_UnInitial( &m_hDevice ); // 反初始化设备
return CDialog::DestroyWindow();
}
void CDLCWBDEMODlg::OnCheckPlay()
{
UpdateData();
Play( m_bPlay, (SHOWTYPE)m_ShowType ); // 开始采集/停止采集
}
void CDLCWBDEMODlg::OnSelchangeComboSize()
{
Play( FALSE, (SHOWTYPE)m_ShowType ); // 改变大小之前必须关闭视频
int nSize = m_comboSize.GetCurSel();
ULONG Width, Height;
switch( nSize )
{
case 0: Width = 320; Height = 240; break;
case 1: Width = 640; Height = 480; break;
case 2: Width = 1280; Height = 1024; break;
case 3: Width = 2048; Height = 1536; break;
}
DL_SetParam( m_hDevice, enWidth, Width ); // 设置采集宽度
DL_SetParam( m_hDevice, enHeight, Height ); // 设置采集高度
Play( TRUE, (SHOWTYPE)m_ShowType );
m_bPlay = TRUE;
UpdateData( FALSE );
}
void CDLCWBDEMODlg::OnSelchangeComboColor()
{
if( m_hDevice == NULL ) return;
int nColor = m_comboColor.GetCurSel();
ULONG Min = 0;
ULONG Max;
switch( nColor )
{
case 0: Max = 255; break;
case 1:
case 2:
case 3:
case 5: Max = 63; break;
case 4: Max = 15; break;
case 6: DL_GetRegRange( m_hDevice, EXPOSURE, &Min, &Max );
}
m_sliderColor.SetRange( Min, Max );
if( !m_bPlay ) return;
ULONG Val;
if( nColor < 6 )
DL_GetParam( m_hDevice, (PARAMTYPE)nColor, &Val ); // 必须在采集状态
else
DL_RegOperation( m_hDevice, (REGISTER)(nColor-6), &Val, FALSE );
m_sliderColor.SetPos( Val );
UpdateData(FALSE);
}
void CDLCWBDEMODlg::OnReleasedcaptureSliderColor(NMHDR* pNMHDR, LRESULT* pResult)
{
int nPos = m_sliderColor.GetPos();
int nColor = m_comboColor.GetCurSel();
if( nColor < 6 )
DL_SetParam( m_hDevice, (PARAMTYPE)nColor, nPos ); // 设置采集色彩参数
else
DL_RegOperation( m_hDevice, (REGISTER)(nColor-6), (ULONG*)&nPos, TRUE ); // 设置寄存器
*pResult = 0;
}
void CDLCWBDEMODlg::OnButtonCap()
{
if( m_hDevice == NULL ) return;
DL_CaptureToBmp ( m_hDevice, "capture.bmp" );
}
void CDLCWBDEMODlg::OnCheckAvi()
{
if( m_hDevice == NULL ) return;
UpdateData();
CString strAviFile = "1.avi";
if( m_bCapture )
{
// DL_StartCapture( m_hDevice, strAviFile );
((CButton*)GetDlgItem( IDC_BUTTON_CAP ) )->EnableWindow( FALSE );
}
else
{
// DL_StopCapture( m_hDevice );
((CButton*)GetDlgItem( IDC_BUTTON_CAP ) )->EnableWindow( TRUE );
}
}
VOID CDLCWBDEMODlg::Play( BOOL bPlay, SHOWTYPE ShowType )
{
if( m_hDevice == NULL ) return;
if( !bPlay )
{
DL_Stop( m_hDevice );
return;
}
RECT rect;
m_staticVideo.GetClientRect( &rect );
DL_Start( m_hDevice, WS_CHILD , 0, 0, rect.right, rect.bottom, m_staticVideo.m_hWnd, ShowType );
// DL_Start( m_hDevice, WS_OVERLAPPEDWINDOW, 20, 20, rect.right, rect.bottom, NULL, ShowType );
}
void CDLCWBDEMODlg::OnRadio1()
{
if( m_hDevice == NULL ) return;
UpdateData();
Play( FALSE, (SHOWTYPE)m_ShowType );
Play( TRUE, (SHOWTYPE)m_ShowType );
}
void CDLCWBDEMODlg::OnRadio2()
{
if( m_hDevice == NULL ) return;
UpdateData();
Play( FALSE, (SHOWTYPE)m_ShowType );
Play( TRUE, (SHOWTYPE)m_ShowType );
}
void CDLCWBDEMODlg::OnButtonProp()
{
if( m_hDevice == NULL ) return;
// DL_ShowPropertyPage( m_hDevice );
}
void CDLCWBDEMODlg::OnButtonLoadbg()
{
if( m_hDevice == NULL ) return;
CFileDialog fileDlg( TRUE, _T("BMP"), NULL,NULL, _T("24Bits BMP|*.bmp||") );
CString strFileName;
if( fileDlg.DoModal() == IDOK )
{
strFileName = fileDlg.GetPathName();
}
// DL_LoadMaskBmp( m_hDevice,strFileName,0x00FF0000 );
}
#define MYFREE(PTR ) { if(PTR) free(PTR); PTR = NULL; }
void CDLCWBDEMODlg::OnButtonCaptobuf()
{
if( m_hDevice == NULL ) return;
int nSize = m_comboSize.GetCurSel();
ULONG Width, Height;
switch( nSize )
{
case 0: Width = 320; Height = 240; break;
case 1: Width = 640; Height = 480; break;
case 2: Width = 1280; Height = 1024; break;
}
BYTE *pBuf = (BYTE*)new BYTE[ Width * Height * 3 ];
BOOL bRet = DL_CaptureToBuf( m_hDevice, pBuf );
DL_GammaOperation( pBuf, Width, Height, 24, 0.6f );
// DO SOMETHING...
Sleep( 1000 );
delete [] pBuf ;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -