MFC,如何获取文件图标并在Picture控件中显示

请大家赐教。使用SHGetFileInfo(...)函数获得一个文件的对应的图标,在对话框上添加了一个picture控件,请问如何显示?直接显示成本本身的IDR_MAIN... 请大家赐教。

使用SHGetFileInfo(...)函数获得一个文件的对应的图标,

在对话框上添加了一个picture控件,请问如何显示?

直接显示成本本身的IDR_MAINFRAME没有问题。

程序如下:
int Ctest1Dlg::GetIconIndex(LPCTSTR lpszPath, BOOL bIsDir, BOOL bSelected)
{
SHFILEINFO sfi;
memset(&sfi, 0, sizeof(sfi));
if(bIsDir)
{
SHGetFileInfo(lpszPath,FILE_ATTRIBUTE_DIRECTORY,&sfi,sizeof(sfi),SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_USEFILEATTRIBUTES|(bSelected ? SHGFI_OPENICON : 0));
return sfi.iIcon;
}
else
{
SHGetFileInfo(lpszPath,FILE_ATTRIBUTE_NORMAL,&sfi,sizeof(sfi),SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_USEFILEATTRIBUTES|(bSelected ? SHGFI_OPENICON : 0));
return sfi.iIcon;
}
return -1;
}

void Ctest1Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码

int nICONIndex = GetIconIndex(_T(".txt"), 0, 0);

HICON hIcon;
hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

::SendMessage(::GetDlgItem(m_hWnd, IDC_STATIC_PROGRESS3), STM_SETICON, (WPARAM)hIcon, 0);
}

请大家赐教,谢谢!
展开
 我来答
出家人词悲
高赞答主

2015-06-15 · 大脑停止不了思考
知道大有可为答主
回答量:1.4万
采纳率:12%
帮助的人:3941万
展开全部

例如:CBitmap bmp; 

bmp.LoadBitmap(IDB_PAGE2); 

GetDlgItem(IDC_PIC)->SetBitmap((HBITMAP)bmp); //IDC_PIC是图片框ID

bmp.Detach(); 

InvalidateRect( rcPic ); // 重绘Pic控件区域 


再加个循环就可以了。。。

补充:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

jellycgl
2015-07-28 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:891万
展开全部
  1. 获取文件图片可以使用GetImage、GetBitmap、GetIcon三个接口;

  2. Picture控件可以直接使用SetBitmap接口设置BMP格式的图片,其他的可以使用自绘的方式解决

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2013-07-04 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1323万
展开全部
int nICONIndex = GetIconIndex(_T(".txt"), 0, 0);
这一句作用是什么?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式