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

📄 relctrldlg.cpp

📁 佳能数码相机 SDK 7.3 开发包 VC++代码 含英文说明文档
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			case cdFLASH_MODE_OFF:					index = m_CFlash.AddString( "Off" );			break;
			case cdFLASH_MODE_AUTO:					index = m_CFlash.AddString( "Auto" );			break;
			case cdFLASH_MODE_ON:					index = m_CFlash.AddString( "On" );				break;
			case cdFLASH_MODE_RED_EYE:				index = m_CFlash.AddString( "Red Eye" );		break;
			case cdFLASH_MODE_SLOW_SYNC:			index = m_CFlash.AddString( "Slow Sync." );		break;
			case cdFLASH_MODE_AUTO_PLUS_RED_EYE:	index = m_CFlash.AddString( "Auto (Red Eye)" );	break;
			case cdFLASH_MODE_ON_PLUS_RED_EYE:		index = m_CFlash.AddString( "On (Red Eye)" );	break;
			case cdFLASH_MODE_NA:					index = m_CFlash.AddString( "(NA)" );			break;
			default:								index = m_CFlash.AddString( "(Error)" );	
		};
		
		m_CFlash.SetItemData( index, PossibleValue );

		if(PossibleValue == CurrValue)
		{
			// Set current setting to edit control of Combo box 
			m_CFlash.SetCurSel( index );
		}
	
	}

	err = CDEnumFlashSettingRelease(hEnumPossibleValue);
	hEnumPossibleValue = NULL;
	if(err) goto camerr;

	m_CFlash.EnableWindow( TRUE );

	return;

camerr:
	if(hEnumPossibleValue)
	{
		CDEnumFlashSettingRelease(hEnumPossibleValue);
	}

	if(err != cdNOT_SUPPORTED){
		char	szErrStr[256];
		wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
		MessageBox( szErrStr );
	}

	return;
}

void CRelCtrlDlg::SetISOSpeedBox()
{
	//
	// Update ISO Combo Box
	//

	cdError					err = cdOK;

	cdRelCamSettingID		TargetSettingID = cdREL_SET_ISO_SPEED_RATINGS;

	cdUInt16				CurrValue = cdREL_VAL_ISO_NA;
	cdUInt16				PossibleValue = cdREL_VAL_ISO_NA;
	cdHEnum					hEnumCamSetting = NULL;
	cdHEnum					hEnumPossibleValue = NULL;
	cdUInt32				BufSize = 0;
	cdRelCamSettingStruct	relStruct;

	memset(&relStruct, 0, sizeof(relStruct));

	if( !m_CISOSpeed.IsWindowVisible() )
	{
		return;
	}
	m_CISOSpeed.EnableWindow( FALSE );
	// Remove all items from the list box.
	m_CISOSpeed.ResetContent();

	//
	// Check whether the camera supports the ISO setting. 
	err = CDEnumRelCamSettingReset( m_hSource, &hEnumCamSetting);
	if(err) goto camerr;

	while( (err = CDEnumRelCamSettingNext(hEnumCamSetting, &relStruct) )== cdOK)
	{
		if(relStruct.SettingID != TargetSettingID)
		{
			continue;
		}

		// Camera supports ISO setting. //

		BufSize = sizeof(CurrValue);

		// Get current setting for default value.
		err = CDGetRelCamSettingData(m_hSource, TargetSettingID, &BufSize, &CurrValue);
		if(err) goto camerr;
		
		//
		// Get all ISO values which can be set to camera,
		// and set the list box.
		err = CDEnumRelCamSettingDataReset(m_hSource, TargetSettingID, &hEnumPossibleValue, &BufSize);
		if(err) goto camerr;

		if(BufSize == sizeof(PossibleValue))
		{
			while( (err = CDEnumRelCamSettingDataNext(hEnumPossibleValue, sizeof(PossibleValue), &PossibleValue) ) == cdOK)
			{
				int index;
				switch(PossibleValue){
					case cdREL_VAL_ISO_AUTO:	index = m_CISOSpeed.AddString( "AUTO" );		break;
					case cdREL_VAL_ISO_6:		index = m_CISOSpeed.AddString( "6" );			break;
					case cdREL_VAL_ISO_8:		index = m_CISOSpeed.AddString( "8" );			break;
					case cdREL_VAL_ISO_10:		index = m_CISOSpeed.AddString( "10" );			break;
					case cdREL_VAL_ISO_12:		index = m_CISOSpeed.AddString( "12" );			break;
					case cdREL_VAL_ISO_16:		index = m_CISOSpeed.AddString( "16" );			break;
					case cdREL_VAL_ISO_20:		index = m_CISOSpeed.AddString( "20" );			break;
					case cdREL_VAL_ISO_25:		index = m_CISOSpeed.AddString( "25" );			break;
					case cdREL_VAL_ISO_32:		index = m_CISOSpeed.AddString( "32" );			break;
					case cdREL_VAL_ISO_40:		index = m_CISOSpeed.AddString( "40" );			break;
					case cdREL_VAL_ISO_50:		index = m_CISOSpeed.AddString( "50" );			break;
					case cdREL_VAL_ISO_64:		index = m_CISOSpeed.AddString( "64" );			break;
					case cdREL_VAL_ISO_80:		index = m_CISOSpeed.AddString( "80" );			break;
					case cdREL_VAL_ISO_100:		index = m_CISOSpeed.AddString( "100" );			break;
					case cdREL_VAL_ISO_125:		index = m_CISOSpeed.AddString( "125" );			break;
					case cdREL_VAL_ISO_160:		index = m_CISOSpeed.AddString( "160" );			break;
					case cdREL_VAL_ISO_200:		index = m_CISOSpeed.AddString( "200" );			break;
					case cdREL_VAL_ISO_250:		index = m_CISOSpeed.AddString( "250" );			break;
					case cdREL_VAL_ISO_320:		index = m_CISOSpeed.AddString( "320" );			break;
					case cdREL_VAL_ISO_400:		index = m_CISOSpeed.AddString( "400" );			break;
					case cdREL_VAL_ISO_500:		index = m_CISOSpeed.AddString( "500" );			break;
					case cdREL_VAL_ISO_640:		index = m_CISOSpeed.AddString( "640" );			break;
					case cdREL_VAL_ISO_800:		index = m_CISOSpeed.AddString( "800" );			break;
					case cdREL_VAL_ISO_1000:	index = m_CISOSpeed.AddString( "1000" );		break;
					case cdREL_VAL_ISO_1250:	index = m_CISOSpeed.AddString( "1250" );		break;
					case cdREL_VAL_ISO_1600:	index = m_CISOSpeed.AddString( "1600" );		break;
					case cdREL_VAL_ISO_2000:	index = m_CISOSpeed.AddString( "2000" );		break;
					case cdREL_VAL_ISO_2500:	index = m_CISOSpeed.AddString( "2500" );		break;
					case cdREL_VAL_ISO_3200:	index = m_CISOSpeed.AddString( "3200" );		break;
					case cdREL_VAL_ISO_4000:	index = m_CISOSpeed.AddString( "4000" );		break;
					case cdREL_VAL_ISO_5000:	index = m_CISOSpeed.AddString( "5000" );		break;
					case cdREL_VAL_ISO_6400:	index = m_CISOSpeed.AddString( "6400" );		break;
					case 0xffff:				index = m_CISOSpeed.AddString( "(Invalid)" );	break;
					default:					index = m_CISOSpeed.AddString( "(Error)" );	
				};
				
				m_CISOSpeed.SetItemData( index, PossibleValue );

				if(PossibleValue == CurrValue)
				{
					// Set current setting to edit control of Combo box 
					m_CISOSpeed.SetCurSel( index );
				}
			}

			m_CISOSpeed.EnableWindow( TRUE );
		}

		err = CDEnumRelCamSettingDataRelease(hEnumPossibleValue);
		hEnumPossibleValue = NULL;
		if(err) goto camerr;
		
		break;
	}

	err = CDEnumRelCamSettingRelease(hEnumCamSetting);
	hEnumCamSetting = NULL;
	if(err) goto camerr;
	
	return;

camerr:
	if(hEnumPossibleValue)
	{
		CDEnumRelCamSettingDataRelease(hEnumPossibleValue);
	}
	if(hEnumCamSetting)
	{
		CDEnumRelCamSettingRelease(hEnumCamSetting);
	}

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

	return;
}


void CRelCtrlDlg::SetPhotoEffectBox()
{
	//
	// Update Photo Effect Combo Box
	//

	cdError					err = cdOK;

	cdRelCamSettingID		TargetSettingID = cdREL_SET_PHOTO_EFFECT;
	
	cdPhotoEffect			CurrValue = cdPHOTO_EFFECT_UNKNOWN;
	cdPhotoEffect			PossibleValue = cdPHOTO_EFFECT_UNKNOWN;
	cdHEnum					hEnumCamSetting = NULL;
	cdHEnum					hEnumPossibleValue = NULL;
	cdUInt32				BufSize = 0;
	cdRelCamSettingStruct	relStruct;

	memset(&relStruct, 0, sizeof(relStruct));

	if( !m_CPhotoEffect.IsWindowVisible() )
	{
		return;
	}
	m_CPhotoEffect.EnableWindow( FALSE );
	// Remove all items from the list box.
	m_CPhotoEffect.ResetContent();

	//
	// Check whether the camera supports the Photo Effect setting. 
	err = CDEnumRelCamSettingReset( m_hSource, &hEnumCamSetting);
	if(err) goto camerr;
	
	while( (err = CDEnumRelCamSettingNext(hEnumCamSetting, &relStruct) )== cdOK)
	{
		if(relStruct.SettingID != TargetSettingID)
		{
			continue;
		}

		// Camera supports Photo Effect setting. //

		BufSize = sizeof(CurrValue);

		// Get current setting for default value.
		err = CDGetRelCamSettingData(m_hSource, TargetSettingID, &BufSize, &CurrValue);
		if(err) goto camerr;

		//
		// Get all Photo Effect settings which can be set to camera,
		// and set the list box.
		err = CDEnumRelCamSettingDataReset(m_hSource, TargetSettingID, &hEnumPossibleValue, &BufSize);
		if(err)goto camerr;

		if(BufSize == sizeof(PossibleValue))
		{	
			while( (err = CDEnumRelCamSettingDataNext(hEnumPossibleValue, sizeof(PossibleValue), &PossibleValue) ) == cdOK)
			{
				int index;
				switch(PossibleValue){
					case cdPHOTO_EFFECT_OFF:			index = m_CPhotoEffect.AddString( "Off" );				break;
					case cdPHOTO_EFFECT_VIVID:			index = m_CPhotoEffect.AddString( "Vivid" );			break;
					case cdPHOTO_EFFECT_NEUTRAL:		index = m_CPhotoEffect.AddString( "Neutral" );			break;
					case cdPHOTO_EFFECT_LOW_SHARPENING:	index = m_CPhotoEffect.AddString( "Low Sharpening" );	break;
					case cdPHOTO_EFFECT_SEPIA:			index = m_CPhotoEffect.AddString( "Sepia" );			break;
					case cdPHOTO_EFFECT_BW:				index = m_CPhotoEffect.AddString( "BW" );				break;
					case cdPHOTO_EFFECT_CUSTOM:			index = m_CPhotoEffect.AddString( "Custom" );			break;
					case cdPHOTO_EFFECT_UNKNOWN:		index = m_CPhotoEffect.AddString( "(Unknown)" );		break;
					default:							index = m_CPhotoEffect.AddString( "(Error)" );	
				};
				
				m_CPhotoEffect.SetItemData( index, PossibleValue );

				if(PossibleValue == CurrValue)
				{
					// Set current setting to edit control of Combo box 
					m_CPhotoEffect.SetCurSel( index );
				}
			}

			m_CPhotoEffect.EnableWindow( TRUE );
		}

		err = CDEnumRelCamSettingDataRelease(hEnumPossibleValue);
		hEnumPossibleValue = NULL;
		if(err) goto camerr;

		break;
	}

	err = CDEnumRelCamSettingRelease(hEnumCamSetting);
	hEnumCamSetting = NULL;
	if(err) goto camerr;
	
	return;

camerr:
	if(hEnumPossibleValue)
	{
		CDEnumRelCamSettingDataRelease(hEnumPossibleValue);
	}
	if(hEnumCamSetting)
	{
		CDEnumRelCamSettingRelease(hEnumCamSetting);
	}

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

	return;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CRelCtrlDlg::OnSelchangeShootingMode() 
{	
	cdShootingMode ShootingMode = (cdShootingMode)m_CShootingMode.GetItemData( m_CShootingMode.GetCurSel() );

	cdError err = CDSetShootingMode(m_hSource, ShootingMode);
	if( err ) goto camerr;

	// Update other Combo Box
	SetExpoCompBox();
	SetFlashBox();
	SetISOSpeedBox();
	SetPhotoEffectBox();

	GetCameraInformation();

	return;

camerr:
	char szErrStr[256];
	
	wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
	MessageBox( szErrStr );
}

void CRelCtrlDlg::OnSelchangeExpoComp() 
{
	cdCompensation Comp = (cdCompensation)m_CExpoComp.GetItemData( m_CExpoComp.GetCurSel() );
	
	cdError err = CDSetExposureComp(m_hSource, Comp);
	if( err ) goto camerr;
		
	// Update other Combo Box
	SetShootingModeBox();
	SetISOSpeedBox();
	SetPhotoEffectBox();
	SetFlashBox();

	GetCameraInformation();

	return;

camerr:
	char szErrStr[256];
	
	wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
	MessageBox( szErrStr );
}

void CRelCtrlDlg::OnSelchangeFlash() 
{
	cdFlashMode  FlashMode = (cdFlashMode)m_CFlash.GetItemData( m_CFlash.GetCurSel() );
	
	cdError err = CDSetFlashSetting(m_hSource, FlashMode, cdCOMP_NA);
	if( err ) goto camerr;

	// Update other Combo Box
	SetShootingModeBox();
	SetExpoCompBox();
	SetISOSpeedBox();
	SetPhotoEffectBox();

	GetCameraInformation();

	return;

camerr:
	char szErrStr[256];
	
	wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
	MessageBox( szErrStr );
}

void CRelCtrlDlg::OnSelchangeISOSpeed() 
{
	cdUInt16 ISOValue = (cdUInt16)m_CISOSpeed.GetItemData( m_CISOSpeed.GetCurSel() );
	
	cdError err = CDSetRelCamSettingData(m_hSource, cdREL_SET_ISO_SPEED_RATINGS, sizeof(ISOValue), &ISOValue);
	if( err ) goto camerr;

	// Update other Combo Box
	SetShootingModeBox();
	SetExpoCompBox();
	SetFlashBox();
	SetPhotoEffectBox();

	GetCameraInformation();

	return;

camerr:
	char szErrStr[256];
	
	wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
	MessageBox( szErrStr );
}

void CRelCtrlDlg::OnSelchangePhotoEffect() 
{
	cdPhotoEffect PhotoEffect = (cdPhotoEffect)m_CPhotoEffect.GetItemData( m_CPhotoEffect.GetCurSel() );
	
	cdError err = CDSetRelCamSettingData(m_hSource, cdREL_SET_PHOTO_EFFECT, sizeof(PhotoEffect), &PhotoEffect);
	if( err ) goto camerr;

	// Update other Combo Box
	SetShootingModeBox();
	SetExpoCompBox();
	SetFlashBox();
	SetISOSpeedBox();

	GetCameraInformation();

	return;

camerr:
	char szErrStr[256];
	
	wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
	MessageBox( szErrStr );
}

void CRelCtrlDlg::ShowReleaseParam(char* modelName) 
{
	int cmdshow;

	if( modelName == NULL							||
		!stricmp(modelName, "")						||

		!stricmp(modelName, "PowerShot G1")			||
		!stricmp(modelName, "PowerShot G2")			||
		!stricmp(modelName, "PowerShot Pro90 IS")	||
		!stricmp(modelName, "PowerShot S30")		||
		!stricmp(modelName, "PowerShot S40")		||

		!stricmp(modelName, "IXY DIGITAL")			||
		!stricmp(modelName, "PowerShot S100")		||
		!stricmp(modelName, "DIGITAL IXUS")			||

		!stricmp(modelName, "IXY DIGITAL 300")		||
		!stricmp(modelName, "PowerShot S300")		||
		!stricmp(modelName, "DIGITAL IXUS 300")		||
		
		!stricmp(modelName, "IXY DIGITAL 200")		||
		!stricmp(modelName, "PowerShot S110")		||
		!stricmp(modelName, "DIGITAL IXUS v")		||

		!stricmp(modelName, "IXY DIGITAL 300a")		||
		!stricmp(modelName, "PowerShot S300a")		||
		!stricmp(modelName, "DIGITAL IXUS 330")		||
		
		!stricmp(modelName, "IXY DIGITAL 200a")		||
		!stricmp(modelName, "PowerShot S200")		||
		!stricmp(modelName, "DIGITAL IXUS v2")		||

		!stricmp(modelName, "PowerShot A10")		||
		!stricmp(modelName, "PowerShot A20")		||
		!stricmp(modelName, "PowerShot A30")		||
		!stricmp(modelName, "PowerShot A40")		||
		!stricmp(modelName, "PowerShot A100")		||
		!stricmp(modelName, "PowerShot A200")		||

		!stricmp(modelName, "EOS D30")				||
		!stricmp(modelName, "EOS D60")				||
		!stricmp(modelName, "EOS-1Ds")				||
		!stricmp(modelName, "EOS-1D")
	  )
	{
		cmdshow = SW_HIDE;
	}
	else
	{
		cmdshow = SW_SHOW;
	}

	m_CShootingMode.ShowWindow(cmdshow);
	m_CExpoComp.ShowWindow(cmdshow);
	m_CFlash.ShowWindow(cmdshow);
	m_CISOSpeed.ShowWindow(cmdshow);
	m_CPhotoEffect.ShowWindow(cmdshow);

	m_Static_ShootingMode.ShowWindow(cmdshow);
	m_Static_ExpoComp.ShowWindow(cmdshow);
	m_Static_Flash.ShowWindow(cmdshow);
	m_Static_ISOSpeed.ShowWindow(cmdshow);
	m_Static_PhotoEffect.ShowWindow(cmdshow);
	m_Static_ReleaseParam.ShowWindow(cmdshow);

}

⌨️ 快捷键说明

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