📄 getpicturedlg.cpp
字号:
goto camerr;
}
/* Listing of volume is ended. */
err = CDEnumVolumeRelease( hEnumVol );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
m_CFile.ResetContent();
/* The items in a DCIM directory are enumerated. */
cdHEnum hEnumImage;
cdHImageItem hImage;
cdItemInfo SItemInfo;
int index;
err = CDEnumImageItemReset( hItem, 2, cdENUM_HAS_THUMBNAIL, &hEnumImage );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
index = 0;
while( (err = CDEnumImageItemNext( hEnumImage, &hImage )) == cdOK )
{
/* The information on an image is acquired. */
err = CDGetItemInfo( hImage, &SItemInfo );
if( GETERRORID(err) != cdOK )
{
CDEnumItemRelease( hEnumImage );
goto camerr;
}
/* It checks in an image item. */
if( SItemInfo.Type&cdITEM_TYPE_IMAGE_ITEM )
{
m_CFile.AddString( SItemInfo.Name );
/* The handle of an item is related with the list box. */
m_CFile.SetItemData( index, (DWORD)hImage );
index++;
}
}
if( GETERRORID(err) != cdENUM_NA )
{
CDEnumItemRelease( hEnumImage );
goto camerr;
}
err = CDEnumImageItemRelease( hEnumImage );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
err = CDUnlockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
m_CConnect.EnableWindow( FALSE );
m_CDisconnect.EnableWindow( TRUE );
m_CThumbnail.EnableWindow( TRUE );
m_CPicture.EnableWindow( TRUE );
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
if( m_hSource )
{
CDUnlockUI( m_hSource );
CDCloseSource( m_hSource );
m_hSource = NULL;
}
}
void CGetPictureDlg::OnGetthumbnail()
{
// TODO: Add your control notification handler code here
cdError err;
int index;
cdHImageItem hImage;
/* The handle of the item chosen is acquired. */
index = m_CFile.GetCurSel();
if( index==LB_ERR )
{
MessageBox( "The image is not chosen." );
return;
}
hImage = (cdHImageItem)m_CFile.GetItemData( index );
CString CFileName;
m_CFile.GetText(index, CFileName);
CFileDialog CGetPath( FALSE,
NULL,
CFileName,
OFN_HIDEREADONLY | OFN_NONETWORKBUTTON | OFN_OVERWRITEPROMPT,
"All Files (*.*)|*.*||",
this );
/* The path which saves a file is acquired. */
if( CGetPath.DoModal() != IDOK )
{
return;
}
CString CSavePath;
CSavePath = CGetPath.GetPathName();
/* UI is locked so that information may not be changed. */
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
cdHImageData hImgData;
cdStgMedium MyMedium;
char szPath[MAX_PATH];
/* Image data is acquired. */
err = CDOpenImage( hImage );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
err = CDGetThumbnail( hImage, &hImgData );
if( GETERRORID(err) != cdOK )
{
CDCloseImage( hImage );
goto camerr;
}
strcpy( szPath, CSavePath );
MyMedium.Type = cdMEMTYPE_FILE;
MyMedium.u.lpszFileName = szPath;
err = CDGetImageData( hImgData, &MyMedium, NULL, NULL, 0 );
if( GETERRORID(err) != cdOK )
{
CDCloseImage( hImage );
goto camerr;
}
err = CDCloseImage( hImage );
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 CGetPictureDlg::OnGetpicture()
{
// TODO: Add your control notification handler code here
cdError err;
int index;
cdHImageItem hImage;
/* The handle of the item chosen is acquired. */
index = m_CFile.GetCurSel();
if( index==LB_ERR )
{
MessageBox( "The image is not chosen." );
return;
}
hImage = (cdHImageItem)m_CFile.GetItemData( index );
CString CFileName;
m_CFile.GetText(index, CFileName);
CFileDialog CGetPath( FALSE,
NULL,
CFileName,
OFN_HIDEREADONLY | OFN_NONETWORKBUTTON | OFN_OVERWRITEPROMPT,
"All Files (*.*)|*.*||",
this );
/* The path which saves a file is acquired. */
if( CGetPath.DoModal() != IDOK )
{
return;
}
CString CSavePath;
CSavePath = CGetPath.GetPathName();
/* UI is locked so that information may not be changed. */
err = CDLockUI( m_hSource );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
cdHImageData hImgData;
cdStgMedium MyMedium;
char szPath[MAX_PATH];
/* Image data is acquired. */
err = CDOpenImage( hImage );
if( GETERRORID(err) != cdOK )
{
goto camerr;
}
err = CDGetPicture( hImage, &hImgData );
if( GETERRORID(err) != cdOK )
{
CDCloseImage( hImage );
goto camerr;
}
strcpy( szPath, CSavePath );
MyMedium.Type = cdMEMTYPE_FILE;
MyMedium.u.lpszFileName = szPath;
err = CDGetImageData( hImgData, &MyMedium, NULL, NULL, 0 );
if( GETERRORID(err) != cdOK )
{
CDCloseImage( hImage );
goto camerr;
}
err = CDCloseImage( hImage );
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 CGetPictureDlg::OnEnd()
{
// TODO: Add your control notification handler code here
cdError err;
/* The lock of UI is canceled. */
if( m_hSource )
{
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;
}
EndDialog( 0 );
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
if( m_hCallbackFunction )
{
CDUnregisterEventCallbackFunction( m_hSource, m_hCallbackFunction );
m_hCallbackFunction = NULL;
}
CDCloseSource( m_hSource );
m_hSource = NULL;
EndDialog( 0 );
}
void CGetPictureDlg::OnDisconnect()
{
// TODO: Add your control notification handler code here
cdError err;
m_CFile.ResetContent();
if( m_hSource )
{
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;
}
m_CDisconnect.EnableWindow( FALSE );
m_CThumbnail.EnableWindow( FALSE );
m_CPicture.EnableWindow( FALSE );
m_CConnect.EnableWindow( TRUE );
return;
camerr:
char szErrStr[256];
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
}
void CGetPictureDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your control notification handler code here
/* End processing of CDSDK is performed. */
cdError err;
char szErrStr[256];
err = CDFinishSDK();
if( GETERRORID(err) != cdOK )
{
wsprintf( szErrStr, "ErrorCode = 0x%08X", err );
MessageBox( szErrStr );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -