我們發(fā)現(xiàn)向?qū)傻?span lang=EN-US>MFC程序生成的桌面上(資源管理器上)的
.exe文件和運(yùn)行時(shí)標(biāo)題欄上(最小化時(shí)任務(wù)欄上)的圖標(biāo)都是一樣,實(shí)際上我們可以為它們配置不同的圖標(biāo)。實(shí)際上
vc默認(rèn)的那個(gè)
MFC的圖標(biāo)
(本案例中的
Test.ico)是一個(gè)
ID號(hào)對(duì)應(yīng)了
2個(gè)圖標(biāo),一個(gè)
16×16的一個(gè)
32×32的。一個(gè)
16×16的小圖標(biāo)是用于標(biāo)題欄和最小化時(shí)任務(wù)欄的。另一個(gè)
32×32的大圖標(biāo)則是用于桌面和資源管理器的。故我們可以為應(yīng)用程序再添加一個(gè)與默認(rèn)圖標(biāo)大小不同的
.ico文件
.
以下為MFC向?qū)傻拇翱冢?biāo)題已改) 
以下為生成的.EXE文件在資源管理器中的縮略圖:

以下為項(xiàng)目的資源res文件夾:

一.個(gè)性化圖標(biāo)
(1)為應(yīng)用實(shí)例添加光標(biāo)資源
右擊解決方案資源管理器中的資源文件-〉添加-〉資源-〉選擇Icon資源類型-〉若選“導(dǎo)入”則可以從導(dǎo)入硬盤中已有的ICON文件;若選“新建” 則打開資源編輯器,自己繪制圖標(biāo)。這里我們選擇導(dǎo)入我們收藏的ICON文件,一個(gè)黃紙飛機(jī)IDI_ICON1和一個(gè)紅紙飛機(jī)IDI_ICON2。
我們?cè)谶@里先將這兩個(gè)圖標(biāo)通過CDC的DrawIcon函數(shù)在窗口中繪制出來。
void CEX041View::OnDraw(CDC* pDC)
{
// TODO: 在此處為本機(jī)數(shù)據(jù)添加繪制代碼
HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
pDC->DrawIcon(0,0,hIcon);
DestroyIcon(hIcon);
hIcon=AfxGetApp()->LoadIcon(IDI_ICON2);
pDC->DrawIcon(50,0,hIcon);
DestroyIcon(hIcon);
} 
(2)為應(yīng)用程序?qū)嵗虞d光標(biāo)資源,并為主窗口設(shè)置指定的圖標(biāo)。
使用CWinApp::LoadIcon和CWnd::SetIcon加載圖標(biāo)。
1CWinApp::LoadIcon
HICON LoadIcon( UINT nIDResource ) const;
參數(shù)nIDResource為圖標(biāo)資源的ID。
2CWnd::SetIcon
HICON SetIcon( HICON hIcon, BOOL bBigIcon );
參數(shù)hIcon為以前圖標(biāo)的句柄。
參數(shù)bBigIcon,如果為TRUE,則指定了32×32像素的圖標(biāo);如果為FALSE,則指定了16×16像素的圖標(biāo)。 在BOOL CTestApp::InitInstance()中添加代碼。
<1> m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);// 設(shè)置窗口的小圖標(biāo)
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE); //設(shè)置窗口的大圖標(biāo)
結(jié)果標(biāo)題欄顯示為IDI_ICON1,但是資源管理器中的.EXE文件依然為默認(rèn)MFC圖標(biāo)。
<2>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);// 設(shè)置窗口的大圖標(biāo)
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE); //設(shè)置窗口的小圖標(biāo)
結(jié)果標(biāo)題欄顯示為IDI_ICON2,但是資源管理器中的.EXE文件依然為默認(rèn)MFC圖標(biāo)。
<1><2>說明當(dāng)2個(gè)BOOL bBigIcon的值不同時(shí),選擇BOOL bBigIcon的值為FALSE的圖標(biāo)作為窗口標(biāo)題欄圖標(biāo)。
<3> m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE);//設(shè)置窗口的大圖標(biāo)
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);// 設(shè)置窗口的大圖標(biāo)
結(jié)果標(biāo)題欄顯示為IDI_ICON1,但是資源管理器中的.EXE文件依然為默認(rèn)MFC圖標(biāo)。
<4>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);//設(shè)置窗口的大圖標(biāo)
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE);// 設(shè)置窗口的大圖標(biāo)
結(jié)果標(biāo)題欄顯示為IDI_ICON2,但是資源管理器中的.EXE文件依然為默認(rèn)MFC圖標(biāo)。
3><4>說明當(dāng)2個(gè)BOOL bBigIcon的值同為TRUE時(shí)時(shí),選擇后一個(gè)作為窗口標(biāo)題欄圖標(biāo)。
<5>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);//設(shè)置窗口的小圖標(biāo)
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE);// 設(shè)置窗口的小圖標(biāo)
結(jié)果標(biāo)題欄顯示為IDI_ICON2,但是資源管理器中的.EXE文件依然為默認(rèn)MFC圖標(biāo)。
<6>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE);// 設(shè)置窗口的小圖標(biāo)
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);//設(shè)置窗口的小圖標(biāo)
結(jié)果標(biāo)題欄顯示為IDI_ICON1,但是資源管理器中的.EXE文件依然為默認(rèn)MFC圖標(biāo)。
以下為ICON1作為窗口圖標(biāo)效果:

以下為ICON2作為窗口圖標(biāo)效果:

<5><6>說明當(dāng)2個(gè)BOOL bBigIcon的值同為FALSE時(shí),選擇后一個(gè)作為窗口標(biāo)題欄圖標(biāo)。
(3)用替代法為資源管理器中的.EXE文件更改圖標(biāo)。
我們可以將一個(gè)圖標(biāo)Sina.ICO移動(dòng)到...\Visual Studio 2005\Projects\EX041\EX041\res,然后將原來的MFC默認(rèn)圖標(biāo)EX041.ico重命名為Test1.ico,將Sina.ICO重命名為Test.ico,則資源管理器中的.EXE文件即設(shè)置為我們所要的圖標(biāo)。
以下為項(xiàng)目的資源res文件夾:

以下為生成的.EXE文件在資源管理器中的縮略圖:
