📄 relctrldlg.cpp
字号:
}
/* A thread is ended. */
m_fVFEnd = FALSE;
g_CpVFThread->ResumeThread();
WaitForSingleObject( g_CpVFThread->m_hThread, INFINITE );
m_CViewFinder.SetWindowText( "Start" );
Invalidate();
UpdateWindow();
}
if( m_hSource )
{
/* Remote release control mode is ended. */
err = CDExitReleaseControl( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* The function which receives the event from a camera is canceled. */
if( m_hCallbackFunction )
{
err = CDUnregisterEventCallbackFunction( m_hSource, m_hCallbackFunction );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
m_hCallbackFunction = NULL;
}
/* A device is closed. */
err = CDCloseSource( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
m_hSource = NULL;
}
m_CConnect.EnableWindow( TRUE );
m_CDisconnect.EnableWindow( FALSE );
m_CRelease.EnableWindow( FALSE );
m_CViewFinder.EnableWindow( FALSE );
m_CAEAF.EnableWindow( FALSE );
m_CRelChk1.EnableWindow( FALSE );
m_CRelChk2.EnableWindow( FALSE );
m_CRelChk3.EnableWindow( FALSE );
m_CRelChk4.EnableWindow( FALSE );
ShowReleaseParam(NULL);
UpdateData(TRUE);
m_CInfoString = "";
UpdateData(FALSE);
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
}
void CRelCtrlDlg::OnEnd()
{
// TODO: Add your control notification handler code here
cdError err;
if( m_fVFEnd )
{
/* A view finder is ended. */
err = CDTermViewfinder( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* A thread is ended. */
m_fVFEnd = FALSE;
g_CpVFThread->ResumeThread();
WaitForSingleObject( g_CpVFThread->m_hThread, INFINITE );
}
if( m_hSource )
{
/* Remote release control mode is ended. */
err = CDExitReleaseControl( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
if( m_hCallbackFunction )
{
/* The function which receives the event from a camera is canceled. */
err = CDUnregisterEventCallbackFunction( m_hSource, m_hCallbackFunction );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
m_hCallbackFunction = NULL;
}
/* A device is closed. */
err = CDCloseSource( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
m_hSource = NULL;
}
/* A picture buffer is deleted. */
if( m_BackSurface.hBmp )
{
DeleteObject( m_BackSurface.hBmp );
m_BackSurface.hBmp = NULL;
}
EndDialog( 0 );
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
if( m_fVFEnd )
{
CDTermViewfinder( m_hSource );
m_fVFEnd = FALSE;
g_CpVFThread->ResumeThread();
WaitForSingleObject( g_CpVFThread->m_hThread, INFINITE );
}
if( m_hSource )
{
CDExitReleaseControl( m_hSource );
if( m_hCallbackFunction )
{
CDUnregisterEventCallbackFunction( m_hSource, m_hCallbackFunction );
m_hCallbackFunction = NULL;
}
CDCloseSource( m_hSource );
m_hSource = NULL;
}
if( m_BackSurface.hBmp )
{
DeleteObject( m_BackSurface.hBmp );
m_BackSurface.hBmp = NULL;
}
EndDialog( 0 );
}
void CRelCtrlDlg::OnRelease()
{
// TODO: Add your control notification handler code here
cdError err;
BOOL fRes;
CProgress CProg;
char szSavePath[MAX_PATH];
cdUInt32 NumData;
/* UI is locked so that information may not be changed. */
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* It sets up so that a complete message may be disregarded. */
m_fProgramRelease = TRUE;
/* A special camera ends a view finder. */
if( m_RelControlCap&cdRELEASE_CONTROL_CAP_ABORT_VIEWFINDER )
{
if( m_fVFEnd )
{
/* A view finder is ended. */
err = CDTermViewfinder( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* A thread is ended. */
m_fVFEnd = FALSE;
g_CpVFThread->ResumeThread();
WaitForSingleObject( g_CpVFThread->m_hThread, INFINITE );
m_CViewFinder.SetWindowText( "Start" );
Invalidate();
UpdateWindow();
}
}
/* A photograph is taken. */
NumData = 0;
err = CDRelease( m_hSource, FALSE, NULL, NULL, cdPROG_NO_REPORT, &NumData );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* The directory to save is acquired. */
GetSavePath( szSavePath, MAX_PATH );
/* The photoed picture is saved. */
fRes = CProg.GetReleaseData( m_hSource, NumData, szSavePath );
if( !fRes )
{
goto apierr;
}
else if( GETERRORID(CProg.m_LastErr) == cdOPERATION_CANCELLED )
{
m_fProgramRelease = FALSE;
CDUnlockUI( m_hSource );
return;
}
else if( GETERRORID(CProg.m_LastErr) != cdOK )
{
err = CProg.m_LastErr;
goto camerr;
}
/* The lock of UI is canceled. */
err = CDUnlockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* It sets up so that a complete message may be received. */
m_fProgramRelease = FALSE;
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
CDUnlockUI( m_hSource );
m_fProgramRelease = FALSE;
return;
apierr:
MessageBox( "API Error" );
CDUnlockUI( m_hSource );
m_fProgramRelease = FALSE;
}
void CRelCtrlDlg::OnRelcheck1()
{
// TODO: Add your control notification handler code here
/* UI is locked so that information may not be changed. */
cdError err;
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
err = SetReleaseState();
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* The lock of UI is canceled. */
err = CDUnlockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
CDUnlockUI( m_hSource );
}
void CRelCtrlDlg::OnRelcheck2()
{
// TODO: Add your control notification handler code here
cdError err;
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
err = SetReleaseState();
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* The lock of UI is canceled. */
err = CDUnlockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
CDUnlockUI( m_hSource );
}
void CRelCtrlDlg::OnRelcheck3()
{
// TODO: Add your control notification handler code here
cdError err;
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
err = SetReleaseState();
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* The lock of UI is canceled. */
err = CDUnlockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
CDUnlockUI( m_hSource );
}
void CRelCtrlDlg::OnRelcheck4()
{
// TODO: Add your control notification handler code here
cdError err;
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
err = SetReleaseState();
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* The lock of UI is canceled. */
err = CDUnlockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
CDUnlockUI( m_hSource );
}
void CRelCtrlDlg::OnViewfinder()
{
// TODO: Add your control notification handler code here
cdError err;
cdStgMedium VFMedium;
/* UI is locked so that information may not be changed. */
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
if( !m_fVFEnd )
{
/* The thread which displays view finder is created. */
m_fVFEnd = TRUE;
g_CpVFThread = AfxBeginThread( (AFX_THREADPROC)ViewFinderProc,
(LPVOID)this,
0,
0,
CREATE_SUSPENDED,
NULL );
/* A view finder is started. */
VFMedium.Type = cdMEMTYPE_STREAM;
err = CDStartViewfinder( m_hSource,
FILEFORMAT_BMP,
ViewFinderCallBackFun,
(cdContext)this );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
m_CViewFinder.SetWindowText( "Stop" );
}
else
{
/* A view finder is ended. */
err = CDTermViewfinder( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
/* A thread is ended. */
m_fVFEnd = FALSE;
g_CpVFThread->ResumeThread();
WaitForSingleObject( g_CpVFThread->m_hThread, INFINITE );
m_CViewFinder.SetWindowText( "Start" );
Invalidate();
UpdateWindow();
}
/* The lock of UI is canceled. */
err = CDUnlockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
CDUnlockUI( m_hSource );
}
void CRelCtrlDlg::OnAeaf()
{
// TODO: Add your control notification handler code here
cdError err;
cdUInt32 ActivateFlag = 0x00000007;
char szErrStr[256];
/* UI is locked so that information may not be changed. */
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -