MFC/Windows編程之個性化圖標
以下為MFC向導生成的窗口(標題已改)
以下為生成的.EXE文件在資源管理器中的縮略圖:
以下為項目的資源res文件夾:
一.個性化圖標
(1)為應用實例添加光標資源
右擊解決方案資源管理器中的資源文件-〉添加-〉資源-〉選擇Icon資源類型-〉若選“導入”則可以從導入硬盤中已有的ICON文件;若選“新建” 則打開資源編輯器,自己繪制圖標。這里我們選擇導入我們收藏的ICON文件,一個黃紙飛機IDI_ICON1和一個紅紙飛機IDI_ICON2。
我們在這里先將這兩個圖標通過CDC的DrawIcon函數在窗口中繪制出來。
void CEX041View::OnDraw(CDC* pDC)
{
// TODO: 在此處為本機數據添加繪制代碼
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)為應用程序實例加載光標資源,并為主窗口設置指定的圖標。
使用CWinApp::LoadIcon和CWnd::SetIcon加載圖標。
1CWinApp::LoadIcon
HICON LoadIcon( UINT nIDResource ) const;
參數nIDResource為圖標資源的ID。
2CWnd::SetIcon
HICON SetIcon( HICON hIcon, BOOL bBigIcon );
參數hIcon為以前圖標的句柄。
參數bBigIcon,如果為TRUE,則指定了32×32像素的圖標;如果為FALSE,則指定了16×16像素的圖標。 在BOOL CTestApp::InitInstance()中添加代碼。
<1> m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);// 設置窗口的小圖標
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE); //設置窗口的大圖標
結果標題欄顯示為IDI_ICON1,但是資源管理器中的.EXE文件依然為默認MFC圖標。
<2>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);// 設置窗口的大圖標
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE); //設置窗口的小圖標
結果標題欄顯示為IDI_ICON2,但是資源管理器中的.EXE文件依然為默認MFC圖標。
<1><2>說明當2個BOOL bBigIcon的值不同時,選擇BOOL bBigIcon的值為FALSE的圖標作為窗口標題欄圖標。
<3> m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE);//設置窗口的大圖標
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);// 設置窗口的大圖標
結果標題欄顯示為IDI_ICON1,但是資源管理器中的.EXE文件依然為默認MFC圖標。
<4>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),TRUE);//設置窗口的大圖標
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),TRUE);// 設置窗口的大圖標
結果標題欄顯示為IDI_ICON2,但是資源管理器中的.EXE文件依然為默認MFC圖標。
3><4>說明當2個BOOL bBigIcon的值同為TRUE時時,選擇后一個作為窗口標題欄圖標。
<5>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);//設置窗口的小圖標
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE);// 設置窗口的小圖標
結果標題欄顯示為IDI_ICON2,但是資源管理器中的.EXE文件依然為默認MFC圖標。
<6>m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON2),FALSE);// 設置窗口的小圖標
m_pMainWnd->SetIcon ( LoadIcon( IDI_ICON1),FALSE);//設置窗口的小圖標
結果標題欄顯示為IDI_ICON1,但是資源管理器中的.EXE文件依然為默認MFC圖標。
以下為ICON1作為窗口圖標效果:
以下為ICON2作為窗口圖標效果:
<5><6>說明當2個BOOL bBigIcon的值同為FALSE時,選擇后一個作為窗口標題欄圖標。
(3)用替代法為資源管理器中的.EXE文件更改圖標。
我們可以將一個圖標Sina.ICO移動到...\Visual Studio 2005\Projects\EX041\EX041\res,然后將原來的MFC默認圖標EX041.ico重命名為Test1.ico,將Sina.ICO重命名為Test.ico,則資源管理器中的.EXE文件即設置為我們所要的圖標。
以下為項目的資源res文件夾:
以下為生成的.EXE文件在資源管理器中的縮略圖: