如何在MFC應(yīng)用程序中獲取文件的圖標(biāo)
創(chuàng)建基于對(duì)話(huà)框的MFC應(yīng)用程序要在MFC應(yīng)用程序中獲取文件的圖標(biāo),首先需要?jiǎng)?chuàng)建一個(gè)基于對(duì)話(huà)框的應(yīng)用程序。我們以一個(gè)名為GetFileIcon的工程為例來(lái)演示。 設(shè)計(jì)對(duì)話(huà)框界面在對(duì)話(huà)框中添加三個(gè)按鈕、
創(chuàng)建基于對(duì)話(huà)框的MFC應(yīng)用程序
要在MFC應(yīng)用程序中獲取文件的圖標(biāo),首先需要?jiǎng)?chuàng)建一個(gè)基于對(duì)話(huà)框的應(yīng)用程序。我們以一個(gè)名為GetFileIcon的工程為例來(lái)演示。
設(shè)計(jì)對(duì)話(huà)框界面
在對(duì)話(huà)框中添加三個(gè)按鈕、一個(gè)編輯框和一個(gè)靜態(tài)文本,其中“打開(kāi)”按鈕將用于選擇文件,“獲取圖標(biāo)”按鈕將用于獲取選定文件的圖標(biāo)。
實(shí)現(xiàn)“打開(kāi)”按鈕響應(yīng)函數(shù)
為“打開(kāi)”按鈕建立響應(yīng)函數(shù)OnOpen(),在該函數(shù)中添加代碼來(lái)實(shí)現(xiàn)選擇文件并將文件路徑存儲(chǔ)起來(lái)。
```cpp
void CGetFileIconDlg::OnOpen()
{
CString strFilter "All Files(*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_EXPLORER | OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST, strFilter);
if (() IDOK)
{
m_filename ();
}
UpdateData(false);
}
```
實(shí)現(xiàn)“獲取圖標(biāo)”按鈕響應(yīng)函數(shù)
為“獲取圖標(biāo)”按鈕建立響應(yīng)函數(shù)OnGeticon(),在該函數(shù)中添加代碼來(lái)獲取選定文件的圖標(biāo)并顯示在靜態(tài)控件上。
```cpp
void CGetFileIconDlg::OnGeticon()
{
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);
}
```
運(yùn)行程序并測(cè)試
運(yùn)行程序后,點(diǎn)擊“打開(kāi)”按鈕選擇一個(gè)文件,然后點(diǎn)擊“獲取圖標(biāo)”按鈕,就可以看到所選文件的圖標(biāo)顯示在靜態(tài)控件中。
通過(guò)以上步驟,您可以在MFC應(yīng)用程序中輕松獲取指定文件的圖標(biāo),并實(shí)現(xiàn)簡(jiǎn)單而實(shí)用的功能。