• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            luqingfei@C++

            為中華之崛起而崛起!
            兼聽則明,偏聽則暗。

            Win32匯編--使用資源--二進(jìn)制資源與自定義資源

             

            Win32匯編--使用資源--二進(jìn)制資源與自定義資源

             

            1、使用二進(jìn)制資源

            DOSexe文件可以帶一個覆蓋部分,覆蓋部分實際上就是在真正的可執(zhí)行部分后面附加的數(shù)據(jù),然后由程序在運行中打開自身文件并使用這些數(shù)據(jù)。Win32的可執(zhí)行文件中除了上面介紹的這些標(biāo)準(zhǔn)類型的資源外,也可以在程序中附帶其他數(shù)據(jù),當(dāng)然方法完全不同——Win32資源中允許用戶自己定義二進(jìn)制的資源或者自定義格式的資源,資源的內(nèi)容可以是任何數(shù)據(jù),也可以將一個磁盤文件按二進(jìn)制格式包括進(jìn)去。

             

            二進(jìn)制資源的定義格式是:

            資源ID REDATA [DISCARDABLE]

            BEGIN

                          數(shù)據(jù)定義

                         

            END

             

            也可以用一個磁盤文件當(dāng)做資源的內(nèi)容:

            資源ID RCDATA [DISCARDABLE] 文件名

             

            在程序中要使用資源的內(nèi)容時,可以通過以下步驟將資源裝入內(nèi)存使用:

            1)用FindResource(hInstance, lpName, lpType)查找資源。lpName的值為資源IDlpType的值為RT_RCDATA,如果找到資源。那么函數(shù)返回一個資源信息句柄。

            2)用LoadResource(hInstance, hResInfo)裝入資源。hResInfo是上一步中得到的資源信息句柄,裝入成功的話函數(shù)會返回一個資源句柄。

            3)用LckResource(hResData)將資源鎖定到內(nèi)存中。hResData是上一步得到的資源句柄,函數(shù)返回資源裝入的內(nèi)存地址,程序就可以使用內(nèi)存中的數(shù)據(jù)了。

            4)如果想知道裝入資源的大小是多少,可以使用FindResource返回的hResInfo來調(diào)用SizeofResource(hInstance, hResInfo)從而得到資源大小。

             

            下面是一個裝入資源IDID_MYRESRCDATA類型資源的例子:

            invoke FindResource, hInstance, ID_MYRES, RT_RCDATA ;尋找資源

            .if eax

            mov hResInfo, eax

            invoke SizeofResource, hInstance, eax        ;獲取資源尺寸

            mov dwResSize, eax

            invoke LoadResource, hInstance, hResInfo ;裝入資源

            .if eax

                invoke LockResource, eax   ;鎖定資源

                .if eax

                    mov lpRes, eax

                    ;處理lpRes指向的資源內(nèi)容

                .endif

            .endif

            .endif

             

            2、使用自定義資源

            自定義資源的定義格式比二進(jìn)制資源更靈活,它和二進(jìn)制資源的區(qū)別在于可以指定資源類別為自定義的名稱:

            資源ID 類型ID [DISCARDABLE]

            BEGIN

                          數(shù)據(jù)定義

                         

            END

             

            或用一個磁盤文件當(dāng)做資源的內(nèi)容:

            資源ID 類型ID [DISCARDABLE] 文件名

             

             

            類型ID可以是大于255的數(shù)值(255及以下的數(shù)值由Windows使用)或字符串,如可以定義如下:

            1000   WAVE   “Hello.wav”   ;定義類型為“WAVE”,資源ID1000的資源

            1000   TEXT    “Readme.txt” ;定義類型為“TEXT”,資源ID1000的資源

            1000   1000     “Test.bin”     ;定義類型為1000,資源ID1000的資源

             

            在程序中使用自定義資源的方法和使用二進(jìn)制資源類似,唯一的區(qū)別是使用FindResource得到hResInfo的參數(shù)有些區(qū)別,得到hResInfo以后的步驟是一模一樣的。針對上面3句定義,查找資源的方法可以是:

            szResType1        db       “WAVE”,0

            szResType2        db       “TEXT”,0

            invoke FindResource, hInstance, 1000, addr szResType1 ;針對上面第一句

            invoke FindResource, hInstance, 1000, addr szResType2 ;針對上面第二句

            invoke FindResource, hInstance, 1000, 1000            ;針對上面第三句

             

            在使用完二進(jìn)制或自定義資源以后,不必使用任何函數(shù)去釋放它們,Windows在程序退出的時候會自動將它們釋放。

             

            posted on 2010-09-21 16:16 luqingfei 閱讀(1149) 評論(0)  編輯 收藏 引用 所屬分類: Win32匯編程語言序設(shè)計

            導(dǎo)航

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            統(tǒng)計

            留言簿(6)

            隨筆分類(109)

            隨筆檔案(105)

            Blogers

            Game

            Life

            NodeJs

            Python

            Useful Webs

            大牛

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            无码AV波多野结衣久久| 久久综合丁香激情久久| 亚洲精品无码久久久久久| 人妻少妇久久中文字幕| 久久综合久久综合久久| 亚洲人成网站999久久久综合| 一本一道久久综合狠狠老| 亚洲精品高清久久| 亚洲综合精品香蕉久久网| 久久这里只有精品首页| 中文字幕久久精品无码| 一级做a爰片久久毛片人呢| 国产免费久久精品99re丫y| 国产精品无码久久久久 | 亚洲va中文字幕无码久久不卡| 久久99精品国产99久久| 久久婷婷五月综合97色直播| 久久精品一区二区三区中文字幕| 中文字幕人妻色偷偷久久| 亚洲精品国产自在久久| 91精品国产高清久久久久久91 | 日韩精品久久久肉伦网站| 久久伊人影视| 国产精品99久久久久久猫咪| 国产精品美女久久久久| 波多野结衣AV无码久久一区| 久久精品无码一区二区三区免费| 国内精品久久久久久99蜜桃| 亚洲第一极品精品无码久久 | 久久AⅤ人妻少妇嫩草影院| 好久久免费视频高清| 国产精品久久网| 久久中文娱乐网| 9191精品国产免费久久| 91久久九九无码成人网站| 97精品国产91久久久久久| 久久香综合精品久久伊人| 久久久久青草线蕉综合超碰| 久久久久亚洲AV成人网人人网站| 久久婷婷午色综合夜啪| 久久久SS麻豆欧美国产日韩|