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

📄 comsettingdlg.cpp

📁 佳能数码相机 SDK 7.3 开发包 VC++代码 含英文说明文档
💻 CPP
字号:
// ComSettingDlg.cpp : implementation file
//

#include "stdafx.h"
#include "GetPicture.h"
#include "ComSettingDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CComSettingDlg dialog


CComSettingDlg::CComSettingDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CComSettingDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CComSettingDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CComSettingDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CComSettingDlg)
	DDX_Control(pDX, IDC_COMBO_CAMERA, m_CameraList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CComSettingDlg, CDialog)
	//{{AFX_MSG_MAP(CComSettingDlg)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CComSettingDlg message handlers

void CComSettingDlg::SelectSource(cdSourceInfo* pSourceInfo)
{
	DoModal();
	memcpy( pSourceInfo, &m_SelectedSrc, sizeof(cdSourceInfo) );
}

void CComSettingDlg::OnOK() 
{
	// TODO: Add extra validation here
	cdSourceInfo* pSourceInfo = (cdSourceInfo*)m_CameraList.GetItemDataPtr( m_CameraList.GetCurSel() );
	if(pSourceInfo && (int)pSourceInfo != CB_ERR)
	{
		memcpy( &m_SelectedSrc, pSourceInfo, sizeof(cdSourceInfo) );
	}

	CDialog::OnOK();
}

BOOL CComSettingDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	memset( &m_SelectedSrc, 0, sizeof(cdSourceInfo) );

	cdError		err;
	cdHEnum		hEnumDevice;
	cdUInt32 	count;
	cdUInt32	index;

    err = CDEnumDeviceReset(1, &hEnumDevice);
    if(err) goto ErrHandler;
    
	m_CameraList.ResetContent();

    err = CDGetDeviceCount(hEnumDevice, &count);
    if(err)
	{
		goto ErrHandler;
	}
	else if(count == 0)
	{
		m_CameraList.InsertString( 0, "(None)" );
	}
	else
	{	
		cdSourceInfo* pSourceInfo;
	    for(index = 0; index<count; index++)
		{
			pSourceInfo= new cdSourceInfo;

			err = CDEnumDeviceNext(hEnumDevice, pSourceInfo);
			if(!err)
			{
				m_CameraList.InsertString(index, pSourceInfo->Name);
				m_CameraList.SetItemDataPtr( index, pSourceInfo );
			}
		}

    }
	m_CameraList.SetCurSel( 0 );

    err = CDEnumDeviceRelease(hEnumDevice);
	hEnumDevice = 0;
    if(err) goto ErrHandler;

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

ErrHandler:

    if(hEnumDevice)
        CDEnumDeviceRelease (hEnumDevice);
	
	char	szErrStr[256];
	wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
	MessageBox( szErrStr );
	
	EndDialog(0);

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

void CComSettingDlg::OnDestroy() 
{
	CDialog::OnDestroy();

	int count = m_CameraList.GetCount();

	cdSourceInfo* pSourceInfo;
	for(int index = 0; index < count; index++)
	{
		pSourceInfo = (cdSourceInfo*)m_CameraList.GetItemDataPtr( index );
		if(pSourceInfo && (int)pSourceInfo != CB_ERR)
		{
			delete pSourceInfo;
		}
	}
}

⌨️ 快捷键说明

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