ファイル選択ダイアログから、複数のファイルを選択する
BOOL xxxxxx::GetSelectFilePath( CStringArray& strAFilePath )
{
// http://www.g-ishihara.com/mfc_cd_01.htm
CString filter("Img File( *.BMP;*.TIFF )| *.BMP; *.TIFF||");
CString filePath, strBuf;
POSITION pos = NULL;
CFileDialog selDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT | OFN_NOCHANGEDIR, filter);
int err = 0;
// ファイル名リスト用メモリ確保
if (!err)
{
try
{
selDlg.GetOFN().lpstrFile = strBuf.GetBuffer(MAX_PATH *100);
selDlg.GetOFN().nMaxFile = MAX_PATH *100;
}
catch (...) {err = 1;}
}
if( selDlg.DoModal() != IDOK ){
err = 1;
return FALSE;
}
if ((pos = selDlg.GetStartPosition()) == NULL){
err = 1;
}
if (!err){
while (pos)
{
filePath = selDlg.GetNextPathName(pos);
strAFilePath.Add( filePath );
}
}
strBuf.ReleaseBuffer();
return TRUE;
}
BOOL xxxxxx::GetSelectFilePath( CStringArray& strAFilePath )
{
// http://www.g-ishihara.com/mfc_cd_01.htm
CString filter("Img File( *.BMP;*.TIFF )| *.BMP; *.TIFF||");
CString filePath, strBuf;
POSITION pos = NULL;
CFileDialog selDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT | OFN_NOCHANGEDIR, filter);
int err = 0;
// ファイル名リスト用メモリ確保
if (!err)
{
try
{
selDlg.GetOFN().lpstrFile = strBuf.GetBuffer(MAX_PATH *100);
selDlg.GetOFN().nMaxFile = MAX_PATH *100;
}
catch (...) {err = 1;}
}
if( selDlg.DoModal() != IDOK ){
err = 1;
return FALSE;
}
if ((pos = selDlg.GetStartPosition()) == NULL){
err = 1;
}
if (!err){
while (pos)
{
filePath = selDlg.GetNextPathName(pos);
strAFilePath.Add( filePath );
}
}
strBuf.ReleaseBuffer();
return TRUE;
}
PR
ファイル選択ダイアログからファイルをひとつ選択する
BOOL xxxxxx::GetSelectFilePath( CString& strFilePath )
{
CString strExtName("Img File( *.BMP;*.TIFF )| *.BMP; *.TIFF||");
CFileDialog selDlg( TRUE, NULL , NULL, OFN_HIDEREADONLY | OFN_NOCHANGEDIR, strExtName );
if( selDlg.DoModal() == IDOK ){
strFilePath = selDlg.GetPathName();
return TRUE;
} else {
return FALSE;
}
}
BOOL xxxxxx::GetSelectFilePath( CString& strFilePath )
{
CString strExtName("Img File( *.BMP;*.TIFF )| *.BMP; *.TIFF||");
CFileDialog selDlg( TRUE, NULL , NULL, OFN_HIDEREADONLY | OFN_NOCHANGEDIR, strExtName );
if( selDlg.DoModal() == IDOK ){
strFilePath = selDlg.GetPathName();
return TRUE;
} else {
return FALSE;
}
}
ドラッグアンドドロップファイルを取得する。
int xxxxxxx::GetDrapFileList(HDROP hDropInfo, CStringArray& strArrFileList)
{
TCHAR lpStr[MAX_PATH];
CString strFileName;
// Dropされたファイル数をカウント
int iFileCount = ::DragQueryFileA( hDropInfo, 0xffffffff, NULL, 0 );
// Dropされたファイル名を取得する
for( int i = 0; i < iFileCount; i++ ){
int iLen = DragQueryFileA( hDropInfo, i, NULL, 0 );
DragQueryFileW( hDropInfo, i, strFileName.GetBuffer( iLen+1 ), iLen + 1 );
strFileName.ReleaseBuffer();
strArrFileList.Add( strFileName );
}
return strArrFileList.GetSize();
}
int xxxxxxx::GetDrapFileList(HDROP hDropInfo, CStringArray& strArrFileList)
{
TCHAR lpStr[MAX_PATH];
CString strFileName;
// Dropされたファイル数をカウント
int iFileCount = ::DragQueryFileA( hDropInfo, 0xffffffff, NULL, 0 );
// Dropされたファイル名を取得する
for( int i = 0; i < iFileCount; i++ ){
int iLen = DragQueryFileA( hDropInfo, i, NULL, 0 );
DragQueryFileW( hDropInfo, i, strFileName.GetBuffer( iLen+1 ), iLen + 1 );
strFileName.ReleaseBuffer();
strArrFileList.Add( strFileName );
}
return strArrFileList.GetSize();
}