MFC应用实例:[50]获取文件的图标
1、新建一个基于对话框的应用程序,工程名为GetFileIcon。
![MFC应用实例:[50]获取文件的图标](https://exp-picture.cdn.bcebos.com/3b8fb4d7726b0ce2960cdfbcef781423bfb9b643.jpg)
2、如下图为对话框添加三个按钮,一个编辑框,一个静态文本。
![MFC应用实例:[50]获取文件的图标](https://exp-picture.cdn.bcebos.com/1562a0b9763e21c2413d0a63e6e89a618725b143.jpg)
3、为“打开”按钮建立响应函数OnOpen(),在响应函数OnOpen()中添加一下代码:
void CGetFileIconDlg::OnOpen()
{
// TODO: 在此添加控件通知处理程序代码
CString strFilter="All Files(*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_EXPLORER|OFN_HIDEREADONLY|
OFN_ENABLESIZING|OFN_FILEMUSTEXIST,strFilter);
if(dlg.DoModal() == IDOK )//显示打开文件对话框
{
m_filename=dlg.GetPathName();
}
UpdateData(false);
}
![MFC应用实例:[50]获取文件的图标](https://exp-picture.cdn.bcebos.com/b1454a1bd10ff2260876dabd9c99e92abbb8a443.jpg)
4、为获取图标按钮建立响应函数OnGeticon(),在响应函数OnGeticon()中添加一下代码:
void CGetFileIconDlg::OnGeticon()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
SHFILEINFO shfi; //文件信息结构变量用于存放函数调用的结果
memset(&shfi,0,sizeof(shfi));
SHGetFileInfo(m_filename, FILE_ATTRIBUTE_NORMAL, &shfi, sizeof(SHFILEINFO),SHGFI_ICON);
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC1);
//设置静态控件的样式,使其可以使用图标,并试图标显示使居中
pStatic->ModifyStyle(0xF,SS_ICON|SS_CENTERIMAGE);
//设置静态控件图标
pStatic->SetIcon(shfi.hIcon);
}
![MFC应用实例:[50]获取文件的图标](https://exp-picture.cdn.bcebos.com/bbf95c406afec314fc297e5dcac1b727ad539c43.jpg)
5、程序运行如下:
![MFC应用实例:[50]获取文件的图标](https://exp-picture.cdn.bcebos.com/4080a927ac53068882c04e7957e8904801fc9643.jpg)
6、打开桌面的新建文本文件.txt程序运行如下:
![MFC应用实例:[50]获取文件的图标](https://exp-picture.cdn.bcebos.com/dda98e4800fc77f781e2b493c8715fdb37209043.jpg)