日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win32窗体应用程序如何添加资源文件?

發(fā)布時間:2024/7/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win32窗体应用程序如何添加资源文件? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


Win32窗體應(yīng)用程序如何添加資源文件?


? ? ?上一篇文章介紹了:如何創(chuàng)建一個最簡單的Windows窗體應(yīng)用程序。

? ? ?按照上一篇文章的介紹,我們的HelloApp項目對應(yīng)如下的窗體應(yīng)用程序:

? ? ?

? ? ?這一篇文章中,我們將在這個程序的基礎(chǔ)上,介紹如何在項目中添加資源文件,完成對程序圖標的修改。

? ? ?最終期望得到的效果為:

? ? ?

? ? ?明確了目標,下面我們開始正式介紹。


? ? ?程序是如何加載圖片的?

? ? ?我們往項目中添加圖片/圖標/光標等資源文件的目的就是在程序中將其顯示出來。為了更好的理解如何在項目中添加資源文件,我們先來看看在下面的兩個程序中是如何加載資源圖片的。

? ? ?1.HelloApp

? ? ?還從HelloApp項目入手,回憶下我們是如何設(shè)置程序窗體的圖標的?

? ? ?上文我們介紹過,WinMain函數(shù)是程序的入口,在此函數(shù)中我們要定義窗口類結(jié)構(gòu)WNDCLASSEX。而此結(jié)構(gòu)包含關(guān)于窗口的信息,例如應(yīng)用程序圖標、窗口背景色、標題欄中顯示的名稱、窗口過程函數(shù)的名稱等。

? ? ?我們可以在WinMain函數(shù)中找到設(shè)定應(yīng)用程序圖標的這行代碼:

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

? ? ?可以看到,LoadIcon函數(shù)用于加載圖標,代碼中指定使用IDI_APPLICATION作為應(yīng)用程序圖標,而通過觀察定義我們會發(fā)現(xiàn)IDI_APPLICATION僅僅對應(yīng)一個整形的數(shù),它是如何與一個圖標對應(yīng)上的呢?我們再看一個例子

? ? ?2.象棋小巫師

? ? ?象棋小巫師是一個開源的象棋AI程序,它最早版本的窗體界面如下:


? ? ?顯然這個象棋程序的界面是通過已有的圖片資源繪制上去的。

? ? ?如果去追溯它的源碼可以發(fā)現(xiàn),它是通過類似于下面這行代碼來將資源中的圖片加載到程序中的:

LoadImage(Xqwl.hInst, MAKEINTRESOURCE(IDB_BOARD), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_SHARED);

? ? ?其中IDB_BOARD標識的是整個棋盤對應(yīng)的圖片,通過查找定義可以看到。IDB_BOARD被定義在名為resource.h的頭文件中,截圖如下:

? ? ?

? ? ?可以看到IDB_BOARD仍然僅僅對應(yīng)了一個整形的數(shù),它是如何與圖片關(guān)聯(lián)上的呢?

? ? ?在解決方案資源管理器中,我發(fā)現(xiàn)資源文件下有一個拓展名為.rc的文件:

? ? ?

? ? ?它很有可能就是我們要找的答案,查看其代碼:

? ? ?

? ? ?我們欣喜的在拓展名為.rc的文件中發(fā)現(xiàn)了IDB_BOARD這個變量,并且發(fā)現(xiàn)了疑似文件路徑的字符串。

? ? ?我們按照這個路徑線索去尋找,發(fā)現(xiàn)正是我們想要的那張圖片:

? ? ?

? ? ?通過我們一系列不嚴謹?shù)那笾剿?#xff0c;我們發(fā)現(xiàn)了資源圖片使用原理:

? ? ?程序通過一個resource.h文件和項目的.rc文件配合來完成圖片資源的加載。

? ? ?程序員只需向相應(yīng)的函數(shù)(例如LoadImage)提供resource.h中定義的整形變量(例如IDB_BOARD

? ? ?整形變量IDB_BOARD具體對應(yīng)的資源文件是什么是通過.rc文件控制的。


? ? ?如何添加資源文件?

? ? ?明白了Win32應(yīng)用程序資源文件的使用原理,我們來看看如何添加資源文件?

? ? ?也就是我們?nèi)绾蝸砩?span style="font-size:18px">resource.h文件和項目的.rc文件

? ? ?我們打開上一文介紹的HelloApp項目(我僅以它為例說明,你可選擇在任意項目上完成下面的操作)

? ? ?1.準備資源文件

? ? ?為了完成我們的測試你需要在項目中新建一個用于存放資源的文件夾,隨便找?guī)讖垐D片放進去即可。

? ? ?

? ? ?可以看到,我在RES文件夾中準備了一些圖片、視頻和圖標文件。

? ? ?

? ? ?2.添加資源

? ? ?在解決方案資源管理器中,右鍵資源文件->單擊添加->單擊資源

? ? ?

? ? ?完成后會跳出如下的界面 ? ??

? ? ?

? ? ?雖然什么都還沒做,此時你已經(jīng)可以看到,在解決方案資源管理器中,我們的IDE,也就是VS已經(jīng)幫我們生成了resource.h和HelloApp.rc文件,盡管現(xiàn)在還沒有什么實質(zhì)性的內(nèi)容。

? ? ?選擇圖標選項Icon,然后單擊導(dǎo)入,將我們在RES文件夾中準備的圖標文件導(dǎo)入。

? ? ?成功后,我們可以分別在resource.h和HelloApp.rc中看到:

? ? ? ??


? ? ?可以看到,VS已經(jīng)幫我們生成了相應(yīng)的代碼,我們可以使用整形變量IDI_ICON1來標識我們選擇的對應(yīng)圖標了。

? ? ?如果我們想要自己命名呢?只需直接修改resource.h和HelloApp.rc相應(yīng)位置,只要這兩個文件能夠?qū)?yīng)即可。

? ? ?我將變量名修改為了IDI_XQ。

? ? ?隨后,找到WndMain函數(shù)中用于描述窗體信息的WNDCLASSEX結(jié)構(gòu)對應(yīng)的那部分代碼,我們稍作修改:


? ? ?我們重新指定了應(yīng)用程序的圖標,重新生成項目,就得到了我們期望的結(jié)果:

? ? ?

? ? ?到此就介紹完畢了。如果你想向資源文件中添加圖片/光標文件等,方法是完全類似的。

? ? ?希望閱讀本文能讓你有所收獲,本文中錯誤的地方還望指正。


創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Win32窗体应用程序如何添加资源文件?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。