九九热这里直有精品,1区二区三区在线播放,玖玖爱在线观看资源,国产aⅴ综合网,午夜福利男女,日本亚洲欧美三级,日韩无码黄色导航,内射少妇13区,中文字幕高清网

您身邊的軟件定制專家--9年開發(fā)經(jīng)驗為您護航

18678812288
0531-88887250

VC++自定義對話框程序界面圖標(biāo)以及 *.exe 桌面圖標(biāo)

文章作者:濟南軟件開發(fā) 時間:2016年09月27日

  濟南軟件開發(fā)在使用VC++開發(fā)自己的應(yīng)用程序時,VC總是自動為我們生成一個默認(rèn)的圖標(biāo),讀者是否想過為自己開發(fā)的程序自定義一個具有個性化的圖標(biāo)呢?若是的話,想必以下這篇文章會對讀者有所益處。下面本人就為大家介紹一下如何利用VC++為自己的應(yīng)用程序自定義自己的個性化圖標(biāo)!

  選擇好自己想要使用的圖片,然后將其轉(zhuǎn)換成位圖格式(*.bmp),一張16*16的位圖,一張32*32的位圖,可以使用畫圖工具來的拉伸和縮放功能(按比例進行計算),也可以借助其他更好用的圖片處理軟件。

  在工程的 res 文件夾里新建一個文件夾“MyPicture”,然后將剛才轉(zhuǎn)換好的兩張位圖放到這個文件夾里(注意:一定要把位圖放在工程里指定的位置里面,否之以后若需要用到是會出現(xiàn)找不到位圖資源的錯誤。)

  用VC打開工程,然后切換到資源視圖

  右擊“ *.rc”—添加資源—選擇“Bitmap”—選擇“導(dǎo)入”—然后導(dǎo)入剛才轉(zhuǎn)換后的兩張位圖,此時會出現(xiàn)Bitmap文件夾,里面就有我們需要的兩張剛才轉(zhuǎn)換的位圖資源(IDB_BITMAP1, IDB_BITMAP2)。

  右擊“Icon”—插入icon—此時出現(xiàn)“IDI-ICON1”—雙擊“IDI-ICON1”—在右邊的窗口能看到系統(tǒng)已經(jīng)創(chuàng)建好了兩張“BMP”位圖(一張是“16*16,4位,BMP”,一張是“32*32,4位,BMP”),此時我們可以直接編輯這兩張位圖成為我們需要的 ICON 圖標(biāo),不過最好自己再新建兩張 24 位的BMP位圖(也可以用系統(tǒng)給我們生成的那兩張圖片)

  。

  右擊下邊的空白欄—新建圖像類型—分別選擇“16*16,24位”和“32*32,24位”。這樣就新建了兩張 BMP位圖。

  雙擊“IDB_BITMAP1”—選自“矩形選擇工具”—然后將整張“IDB_BITMAP1”的位圖選擇—然后復(fù)制(ctrl+c)

  雙擊“IDI_ICON1”—選擇“16*16,24位,BMP”—然后在右邊的圖片窗口“Ctrl+v”,

  注意:最好先將自己的整張BMP圖片的背景用“填充工具”或“噴槍工具”涂白后再執(zhí)行“Ctrl+v”,否則圖標(biāo)的背景無法和桌面的背景一樣。

  按照上面的步驟將“32*32,24位,BMP”的位圖資源也繪制好。

  (以上是圖標(biāo)的準(zhǔn)備工作,下面才真正開始替換程序界面的圖標(biāo)和桌面上的*.exe 文件的圖標(biāo))

  第一種方法:(相對比較簡單,也比較直接)

  刪除“資源視圖”的“IDR_MAINFRAME”—然后將“IDI_ICON1”的“ID”更改為“IDR_MAINFRAME”

  重新編譯運行,此時程序界面顯示的大圖標(biāo)和小圖標(biāo),以及在桌面上的 *.exe 文件的圖標(biāo)。

  第二種方法:(更改程序的代碼,不更改原來工程的資源,即不需要刪除“資源視圖”里原來的圖標(biāo)資源)

  MFC程序中的對話框程序默認(rèn)加載程序界面圖標(biāo)以及*.exe 桌面圖標(biāo)的方式其實很簡單,在沒有其他程序圖標(biāo)的情況下,在框架類例如“CSonyPeaceDlg”的頭文件 “SonyPeaceDlg.h”有這樣一個成員變量

  protected:

  HICON m_hIcon;

  這個成員變量是用來加載 程序界面圖標(biāo)以及 *.exe 桌面圖標(biāo) 的。

  然后在 “SonyPeaceDlg.cpp”的OnInitDialog() 函數(shù)里面有這樣兩句加載圖標(biāo)的語句

  SetIcon(m_hIcon, TRUE);        //設(shè)置大圖標(biāo)

  SetIcon(m_hIcon, FALSE);           //設(shè)置小圖標(biāo)

  其中第一條語句是用來設(shè)置桌面的  *.exe 桌面圖標(biāo) ,第二條語句是用來設(shè)置程序界面左上角以及任務(wù)欄的程序圖標(biāo)。因此,若是想更改程序的界面圖標(biāo)以及桌面 *.exe 的圖標(biāo)的話,可以在OnInitDialog() 函數(shù)里面更改。方法:

  在“SonyPeaceDlg.h”文件里面定義一個成員變量,如

  protected:

  HICON m_myhIcon;

  然后將“SonyPeaceDlg.cpp”的OnInitDialog() 函數(shù) 里面原來兩條設(shè)置程序圖標(biāo)的語句注釋掉,并改為如下語句:

  //SetIcon(m_hIcon, TRUE);          //設(shè)置大圖標(biāo)

  //SetIcon(m_hIcon, FALSE);         //設(shè)置小圖標(biāo)

  m_myhIcon = LoadIcon(theApp.m_hInstance, MAKEINTRESOURCE(IDI_ICON1));

  SetIcon(m_ myhIcon, TRUE);

  SetIcon(m_ myhIcon, FALSE);

  此時重新編譯程序并運行,就能看到程序運行界面的圖標(biāo)已經(jīng)被更改為我們自己想要的圖標(biāo)了,但是此時只是改變了程序運行時的界面圖標(biāo),至于桌面上的那個*.exe 程序的圖標(biāo)是否已經(jīng)更改了呢?我們可以到項目工程里相應(yīng)的目錄看一下,我們會發(fā)現(xiàn)此時的 *.exe 程序的圖標(biāo)還沒有改變。為什么會這樣呢?

  我們可以先在“查找和替換”搜索欄里查找“IDR_MAINFRAME”選項,直到找到“SonyPeace.rc”文件下面的“IDR_MAINFRAME”。

  我們可以在上面看到有三個圖標(biāo),一個是系統(tǒng)默認(rèn)的圖標(biāo)“IDR_MAINFRAME”,另外兩個是我自己加載到工程里的圖標(biāo)“IDI_ICON1”和“IDI_ICON2”,其中我們剛才加載的是“IDI_ICON1” 。再看看上面有一段綠色的注釋,大概意思是:“ID號最小的那個圖標(biāo)將會確保成為應(yīng)用程序的圖標(biāo)?!?/span>

  我再通過“查找和替換”欄切換到Resource.h文件下面,可以看到其中有這樣的內(nèi)容:

  我們可以找到 剛才所說的三個圖標(biāo)資源的ID 號:“IDR_MAINFRAME”的ID為154, “IDI_ICON1”和“IDI_ICON2”的ID號分別為158和155,這兩個圖標(biāo)的ID都比系統(tǒng)默認(rèn)提供的圖標(biāo)的ID大。我們可以試著把它們的ID彼此對調(diào)一下,如,把最小的ID(154)賦給“IDI_ICON1”,如下圖:

  然后再重新編譯程序,然后再到工程目錄的*.exe文件夾下面,此時,我們就可以驚奇的發(fā)現(xiàn),我們終于實現(xiàn)了把 *.exe的桌面圖標(biāo)更改成我們自定義的圖標(biāo)了,同時,程序桌面的圖標(biāo)也是我們自己自定義的圖標(biāo)。

  若還不能確定沒問題,我們再試一下,把最小的ID(154)賦給“IDI_ICON2”,

  再重新編譯運行,此時程序桌面的圖標(biāo)變成了另一個我們自己自定義的圖標(biāo)。

  至此,我們就已經(jīng)實現(xiàn)了程序界面圖標(biāo)以及*.exe 桌面圖標(biāo)的更改。

  在此,我在介紹另外一種方法,也是用代碼在加載自定義圖標(biāo)。

  首先,通過類向?qū)?,我們給程序添加消息“WM_CREATE”及其映射函數(shù)“OnCreate()”然后在 “return 0;”語句之前加上以下代碼:

  m_myhIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

  SetIcon(m_myhIcon, true);

  SetIcon(m_myhIcon, false);

  當(dāng)然,也需要在先“SonyPeaceDlg.h”文件定義一個成員變量:

  protected:

  HICON m_myhIcon;

  同時,也需要象第二種方法一樣將自定義圖標(biāo)的ID號更改為最小,然后重新編譯運行程序,也能夠達到我們想要的效果。


想要了解更多詳情歡迎來電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。

邢台市| 页游| 视频| 额敏县| 昭通市| 额尔古纳市| 察雅县| 西乡县| 专栏| 襄城县| 夏邑县| 英超| 远安县| 利津县| 北川| 山东省| 九龙县| 乌兰县| 二连浩特市| 岑巩县| 古交市| 定远县| 嘉兴市| 长岛县| 梨树县| 息烽县| 雅安市| 鹤山市| 永年县| 石楼县| 临桂县| 白水县| 阿鲁科尔沁旗| 南宫市| 桂平市| 三河市| 哈尔滨市| 明水县| 台前县| 凯里市| 买车|