读取文件图标及目录Copy[2006-10-16]
来源:互联网 发布:泛海三江如何编程 编辑:程序博客网 时间:2024/04/29 12:06
1. 使用SHGetFileInfo 函数提取文件ICON:
// 头文件 ICONExtracter.h
//---------------------------------------------------------------------------------------------------------------
class CIconExtracter
...{
public:
CIconExtracter(void);
~CIconExtracter(void);
public:
HIMAGELIST GetDirIconsList( const TCHAR* DirPath, bool bSmallIcon );
UINT GetDirIndex( bool bSmallIcon );
UINT GetFileIndex( const TCHAR* FilePath, bool bSmallIcon );
HICON GetDirIcon( bool bSmallIcon );
HICON GetFileIcon( const TCHAR* FilePath, bool bSmallIcon );
};
//---------------------------------------------------------------------------------------------------------------
// 实现文件 iconextracter.cpp
//---------------------------------------------------------------------------------------------------------------
#include ".iconextracter.h"
CIconExtracter::CIconExtracter(void)
...{
}
CIconExtracter::~CIconExtracter(void)
...{
}
HIMAGELIST CIconExtracter::GetDirIconsList( const TCHAR* DirPath, bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
return (HIMAGELIST)SHGetFileInfo( DirPath, 0, &sfi, sizeof( SHFILEINFO ), dwFlag );
}
UINT CIconExtracter::GetDirIndex( bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( _T("other"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.iIcon;
}
UINT CIconExtracter::GetFileIndex( const TCHAR* FilePath, bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( FilePath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.iIcon;
}
HICON CIconExtracter::GetDirIcon( bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( _T("no mattor"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.hIcon;
}
HICON CIconExtracter::GetFileIcon( const TCHAR* FilePath, bool bSmallIcon )
...{
SHFILEINFO sfi= ...{0};
DWORD dwFlag = SHGFI_ICON | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( FilePath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.hIcon;
}
bool CFileAndDirCopier::FileOperation( UINT Operate, CString& SrcPath, CString& DestPath )
{
SrcPath += _T('/0'); //--: PC相上要加该行, wince下可不用
SHFILEOPSTRUCT fp = {0};
fp.hwnd = GetSafeHwnd();
fp.wFunc = Operate;
fp.pFrom = SrcPath.GetBuffer( SrcPath.GetLength() + 1 );
fp.pTo = DestPath.GetBuffer( DestPath.GetLength() + 1 );
fp.fFlags = 0;
int rt = SHFileOperation( &fp );
SrcPath.ReleaseBuffer();
DestPath.ReleaseBuffer();
}
使用部分函数:
void CFileAndDirCopier::OnBnClickedButtonCopy()
{
UpdateData( TRUE );
FileOperation( FO_COPY, m_SrcPath, m_DestPath );
return;
}
void CFileAndDirCopier::OnBnClickedButtonMove()
{
UpdateData( TRUE );
FileOperation( FO_MOVE, m_SrcPath, m_DestPath );
return;
}
void CFileAndDirCopier::OnBnClickedButtonRename()
{
UpdateData( TRUE );
FileOperation( FO_RENAME, m_SrcPath, m_DestPath );
return;
}
void CFileAndDirCopier::OnBnClickedButtonDelete()
{
UpdateData( TRUE );
FileOperation( FO_DELETE, m_SrcPath, m_DestPath );
return;
}
1. 使用SHGetFileInfo 函数提取文件ICON:
// 头文件 ICONExtracter.h
//---------------------------------------------------------------------------------------------------------------
class CIconExtracter
...{
public:
CIconExtracter(void);
~CIconExtracter(void);
public:
HIMAGELIST GetDirIconsList( const TCHAR* DirPath, bool bSmallIcon );
UINT GetDirIndex( bool bSmallIcon );
UINT GetFileIndex( const TCHAR* FilePath, bool bSmallIcon );
HICON GetDirIcon( bool bSmallIcon );
HICON GetFileIcon( const TCHAR* FilePath, bool bSmallIcon );
};
//---------------------------------------------------------------------------------------------------------------
// 实现文件 iconextracter.cpp
//---------------------------------------------------------------------------------------------------------------
#include ".iconextracter.h"
CIconExtracter::CIconExtracter(void)
...{
}
CIconExtracter::~CIconExtracter(void)
...{
}
HIMAGELIST CIconExtracter::GetDirIconsList( const TCHAR* DirPath, bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
return (HIMAGELIST)SHGetFileInfo( DirPath, 0, &sfi, sizeof( SHFILEINFO ), dwFlag );
}
UINT CIconExtracter::GetDirIndex( bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( _T("other"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.iIcon;
}
UINT CIconExtracter::GetFileIndex( const TCHAR* FilePath, bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( FilePath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.iIcon;
}
HICON CIconExtracter::GetDirIcon( bool bSmallIcon )
...{
SHFILEINFO sfi;
DWORD dwFlag = SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( _T("no mattor"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.hIcon;
}
HICON CIconExtracter::GetFileIcon( const TCHAR* FilePath, bool bSmallIcon )
...{
SHFILEINFO sfi= ...{0};
DWORD dwFlag = SHGFI_ICON | SHGFI_USEFILEATTRIBUTES;
dwFlag |= bSmallIcon ? SHGFI_SMALLICON : SHGFI_LARGEICON;
SHGetFileInfo( FilePath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof( SHFILEINFO ), dwFlag );
return sfi.hIcon;
}
2. 通过SHFileOperation 外壳函数来拷贝目录及文件:
-- 函数原型如:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shfileoperation.asp
注: 在使用CString做为参数时,要用GetBuffer方式来读取原字串否则会出一些copy的错误.
{
SHFILEOPSTRUCT fp = {0};
fp.hwnd = GetSafeHwnd();
fp.wFunc = FO_COPY;
fp.pFrom = SrcFile.GetBuffer(SrcFile.GetLength() + 1);
fp.pTo = DestFile.GetBuffer(DestFile.GetLength() + 1);
fp.fFlags = 0;
int rt = SHFileOperation( &fp );
SrcFile.ReleaseBuffer(SrcFile.GetLength() + 1 );
DestFile.ReleaseBuffer(SrcFile.GetLength() + 1 );
return ( rt == 0);
}
2. 通过SHFileOperation 外壳函数来拷贝目录及文件:
-- 函数原型如:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shfileoperation.asp
注: 在使用CString做为参数时,要用GetBuffer方式来读取原字串否则会出一些copy的错误.
- 读取文件图标及目录Copy[2006-10-16]
- 递归读取目录及文件
- 递归读取目录及文件
- linux,读取目录文件及stat用法
- ASP.NET读取目录及文件
- 递归读取目录及删除文件
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法
- 文件图标的读取
- C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法 (转)
- PHP远程任意文件读取及目录遍历漏洞
- VC++ 读取和保存文件对话框及默认目录!
- VC++ 读取和保存文件对话框及默认目录! (转)
- 遍历文件目录及bmp位图信息头的读取
- VC++ 读取和保存文件对话框及默认目录
- Linux更改文件所有者或组
- Java咖啡馆(2)——第一杯咖啡
- Java咖啡馆(3)——Eclipse
- 心碎离开,转身回到荒凉里等待……
- blog
- 读取文件图标及目录Copy[2006-10-16]
- 接受了一个新任务
- 访问MySQL的javaBean
- name
- shp2sde命令行方式向arcsde批量导入数据脚本的生成步骤
- 一个计算机专业女生的悲惨命运
- 。图片和素材
- 数据库--Oracle体系结构
- 简易远程遥控程序