프로그래밍 팁/etc
파일과 폴더 아이콘 핸들 가져오기
띠깜
2010. 4. 12. 18:28
다른 프로그램의 파일아이콘을 가져올때 사용할 수 있는 함수입니다.
HICON GetFileIconHandle(CString strFileName, BOOL bSmallIcon)
{
SHFILEINFO sfi;
if (bSmallIcon)
{
SHGetFileInfo(
(LPCTSTR)strFileName,
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
}
else
{
SHGetFileInfo(
(LPCTSTR)strFileName,
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
}
return sfi.hIcon;
}
HICON GetFolderIconHandle(BOOL bSmallIcon )
{
SHFILEINFO sfi;
if (bSmallIcon)
{
SHGetFileInfo(
(LPCTSTR)"Doesn't matter",
FILE_ATTRIBUTE_DIRECTORY,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
}
else
{
SHGetFileInfo(
(LPCTSTR)"Does not matter",
FILE_ATTRIBUTE_DIRECTORY,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
}
return sfi.hIcon;
}
사용법
SetIcon(GetFolderIconHandle(FALSE), TRUE); // Set big icon
SetIcon(GetFolderIconHandle(TRUE), FALSE); // Set small icon
파일도 마찬가지로 사용하시면 됩니다.
HICON GetFileIconHandle(CString strFileName, BOOL bSmallIcon)
{
SHFILEINFO sfi;
if (bSmallIcon)
{
SHGetFileInfo(
(LPCTSTR)strFileName,
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
}
else
{
SHGetFileInfo(
(LPCTSTR)strFileName,
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
}
return sfi.hIcon;
}
HICON GetFolderIconHandle(BOOL bSmallIcon )
{
SHFILEINFO sfi;
if (bSmallIcon)
{
SHGetFileInfo(
(LPCTSTR)"Doesn't matter",
FILE_ATTRIBUTE_DIRECTORY,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
}
else
{
SHGetFileInfo(
(LPCTSTR)"Does not matter",
FILE_ATTRIBUTE_DIRECTORY,
&sfi,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
}
return sfi.hIcon;
}
사용법
SetIcon(GetFolderIconHandle(FALSE), TRUE); // Set big icon
SetIcon(GetFolderIconHandle(TRUE), FALSE); // Set small icon
파일도 마찬가지로 사용하시면 됩니다.