明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

隨心所欲改變窗口的圖標(biāo)

[摘要]蘇州市西塘南巷 沈建新---- 在使用VC++5.0開發(fā)應(yīng)用程序時,我們可能需要改變框架窗口(包括主框架窗口和子框架窗口)的圖標(biāo),而不是使用VC為你已經(jīng)準(zhǔn)備好了的、很難看的那個圖標(biāo)。但筆者參考了很多書籍、資料,卻沒有找到任何敘述如何去改變窗口圖標(biāo)的方法的文章(或許很多人認(rèn)為這根本就不值得一提),讓...
蘇州市西塘南巷 沈建新

---- 在使用VC++5.0開發(fā)應(yīng)用程序時,我們可能需要改變框架窗口(包括主框架窗口和
子框架窗口)的圖標(biāo),而不是使用VC為你已經(jīng)準(zhǔn)備好了的、很難看的那個圖標(biāo)。但筆者
參考了很多書籍、資料,卻沒有找到任何敘述如何去改變窗口圖標(biāo)的方法的文章(或許
很多人認(rèn)為這根本就不值得一提),讓很多初學(xué)者無從著手。筆者經(jīng)過實踐,發(fā)現(xiàn)了以
下兩個改變框架窗口圖標(biāo)的方法。使用方法一可以在編寫應(yīng)用程序時指定框架窗口的圖
標(biāo),使用方法二可以在程序運行時根據(jù)需要動態(tài)地改變窗口的圖標(biāo)。如果把這兩個方法
結(jié)合起來,就可以隨心所欲改變窗口的圖標(biāo)。
---- 方法一、在編程時指定窗口的圖標(biāo)
---- 一、如果是指定主框架窗口的圖標(biāo),其步驟如下:
創(chuàng)建或打開工程Icon(以下都以工程名為Icon為例)。
單擊Workspace窗口的ResourceView標(biāo)簽,選中資源ID為IDR_MAINFRAME圖標(biāo)資源,然后
按Delete鍵把它刪除掉。注意:一定要把它刪除才行。
從Developer Studio的Insert菜單中選擇Resource,然后選擇Icon,新建(New)一個新
的圖標(biāo)或?qū)耄↖mport)一個已有的圖標(biāo)。
把新圖標(biāo)的資源ID改為AFX_IDI_STD_MDIFRAME(如果是MDI應(yīng)用程序)或改為
AFX_IDI_STD_FRAME(如果是SDI應(yīng)用程序)。AFX_IDI_STD_MDIFRAME和
AFX_IDI_STD_FRAME這兩個資源ID是MFC中預(yù)定義了的。
編譯并運行程序,可以發(fā)現(xiàn)主框架窗口的圖標(biāo)就是你指定的圖標(biāo)。
---- 二、如果是指定MDI子框架窗口的圖標(biāo),其步驟與上述相似。
同上。創(chuàng)建或打開工程Icon。
刪除資源ID為IDR_ICONTYPE(在你的工程中應(yīng)該是IDR_XXXTYPE,其中XXX為你的工程
名)圖標(biāo)資源。同樣要注意的是:一定要把它刪除才行。
同上。新建(New)一個新的圖標(biāo)或?qū)耄↖mport)一個已有的圖標(biāo)。
把新圖標(biāo)的資源ID改為IDR_ICONTYPE(即步驟2中刪除的資源ID)。
編譯并運行程序,可以發(fā)現(xiàn)子框架窗口的圖標(biāo)就是你指定的圖標(biāo)。
---- 用這個方法,可以在多視圖類MDI應(yīng)用程序中為不同視圖的子框架窗口指定不同的
圖標(biāo)。
---- 方法二、在程序運行時動態(tài)地改變窗口的圖標(biāo)
---- 在程序運行時動態(tài)地改變框架窗口圖標(biāo)的原理是使用函數(shù)
---- CWnd::SendMessage()向窗口發(fā)送WM_SETICON消息。其方法是:
HICON hIcon=AfxGetApp()- >LoadIcon(IDI_ICON1);
ASSERT(hIcon);
AfxGetMainWnd()- >SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);
---- 以上敘述中的AfxGetMainWnd()是獲得主框架窗口的窗口句柄,所以改變的是主框
架窗口(包括MDI和SDI)的圖標(biāo),用同樣的方法略作改動就可以改變MDI應(yīng)用程序子框架
窗口的圖標(biāo)。
---- 下面舉一個實例來說明如何改變主框架窗口的圖標(biāo),步驟如下:
---- 1.創(chuàng)建或打開工程Icon。
---- 2. 從Developer Studio的Insert菜單中選擇Ressource,然后選擇Icon,新建
(New)或?qū)耄↖mport)兩個圖標(biāo),并資源ID分別改為IDI_ICON_GREEN,
IDI_ICON_RED。
---- 3.單擊Workspace窗口的ResourceView標(biāo)簽,對IDR_MAINFRAME菜單資源進(jìn)行編輯。
在View菜單中加入一個分隔符和Green Icon、Red Icon兩個菜單項。其資源ID分別改為
ID_VIEW_GREEN和ID_VIEW_RED。
---- 4.為主窗口添加如下消息處理函數(shù):
// CMainFrame message handlers
void CMainFrame::OnViewGreen()
{
// TODO: Add your command handler code here
HICON hIcon=AfxGetApp()- >LoadIcon(IDI_ICON_GREEN);
ASSERT(hIcon);
SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);
//因為是在類CmainFrame中,所以不需要用
AfxGetMainWnd()- >SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);
}
void CMainFrame::OnViewRed()
{
// TODO: Add your command handler code here
HICON hIcon=AfxGetApp()- >LoadIcon(IDI_ICON_RED);
ASSERT(hIcon);
SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);
}
---- 5. 最后編譯并執(zhí)行程序,執(zhí)行View菜單的Green Icon和Red Icon,可以看到成功
得改變主框架窗口的圖標(biāo)。
---- 以上實例是在程序運行時改變主框架窗口的圖標(biāo),可以用同樣的方法改變MDI程序
的子框架窗口的圖標(biāo),有興趣的朋友可以一試。