第二章 DuiEngine資源檔介紹

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   strong   檔案   

一、初識DuiEngine的Skin Files

傳統MFC介面主要是在一個.rc檔案裡進行視窗的布局,然後在resource.h中維繫一個控制項ID通過此控制項ID在程式中通過此控制項ID就可以訪問到該控制項,從而對指定控制項做出各種操作;DuiEngine與之不同,但是思想仍然類似。以上章我們利用DuiEngineWizard產生的第一個工程為例:

DuiEngine將與介面相關的東西都扔到了一個叫Skin Files的檔案夾裡,其中:

1.image檔案中主要用於存放工程中要使用到的相關映像,這個不要什麼多餘的講解;

2.XML最為重要,裡面存放兩種東西:

    <1>介面的布局(順便提一下與傳統介面不同的是DuiEngine布局主要是通過xml檔案來實現的)

    <2>為介面布局中控制項提供樣式支援,我暫且稱其為樣式檔案(有點css的感覺但是又不太像,不知道為什麼當時作者沒有用xml+css做介面布局那),

    

3.index.xml檔案(我暫且稱其為資源檔命名表),相當於工程中資源檔的一張命名表。

 

二、我們需要關心的檔案

DuiEngine的作者為我們編寫了一個輔助的命令程式residbuilder2.exe來協助我們構建工程所需的資源id。

由於DuiEngine的工程沒有一份很好的說明,所以對於初學者來說很難搞清楚Skin Files中哪些檔案需要我們的關心。為此我專門閱讀了residbuilder2.exe的源碼

以我們的第一節課的建立的工程FirstDuiEngineDemo為例,當我們重新構建項目時仔細觀察編譯器下方會出現如下命令:

"XXXX\duiengine\tool\residbuilder2.exe"  -i "XXXX\duiengine\FirsrtDuiEngineDemo\FirsrtDuiEngineDemo\skin\index.xml" -y –p

skin -r .\duires\winres.rc2 -n .\duires\name2id.xml -h .\duires\winres.h

下面我們就上面這條命令來詳細解說各個檔案的作用:

First

-i "XXXX\duiengine\FirsrtDuiEngineDemo\FirsrtDuiEngineDemo\skin\index.xml"

命令-i表示讀取index.xml,即讀取工程中資源檔命名表

<resid type="XML" name="IDR_DUI_INIT"  file="xml\init.xml"  /><resid type="XML" name="IDR_DUI_MSGBOX"   file="xml\dlg_msgbox.xml"  /><resid type="XML" name="IDR_DUI_MAIN_DIALOG"   layer="1" file="xml\dlg_main.xml"/><resid type="IMGX" name="IDP_MAIN_DLG_FRAME"    file="image\dlg_bg_frame.png"  /><resid type="IMGX" name="IDP_BTN_WND_CHECKBOX"     file="image\btn_wnd_checkbox.png"/><resid type="IMGX" name="IDP_BTN_WND_RADIO"  file="image\btn_wnd_radio.png"   /><resid type="IMGX" name="IDP_FOCUS_CHECK"    file="image\focus_checkbox.png"/><resid type="IMGX" name="IDP_FOCUS_RADIO"    file="image\focus_radio.png"   /><resid type="IMGX" name="IDP_BORDER_EDIT"    file="image\img_edit_border.png"   /><resid type="IMGX" name="IDP_BTN_SYS_CLOSE"   file="image\btn_sys_close.png"    /><resid type="IMGX" name="IDP_SCROLL"   file="image\scrollbar.bmp" />

其中主要存放了工程中所要用到的各種類型資源檔命名,DuiEngine支援一下一種資源檔類型定義:

    XML:例如我們介面布局檔案和樣式檔案都是XML類型的

    ICO:表徵圖資源

    BMP:位元影像資源

    IMGX:GDI+圖片資源,當然位元影像也可以使用這種類型

細心的朋友可能看到了,在XML類型中name = IDR_DUI_MAIN_DIALOG後面有一個屬性為layer = 1,它的作用我將過會做出說明

 

Second

-y –p skin

-y表示強制改寫標誌(說實話我也沒搞懂什麼意思)

-p表示設定當前路徑為skin目錄下

 

Three

-r .\duires\winres.rc2

表示將index.xml檔案中的內容格式化到資源檔winres.rc2檔案中

DEFINE_XML(IDR_DUI_INIT,"skin\\xml\\init.xml")DEFINE_XML(IDR_DUI_MSGBOX,"skin\\xml\\dlg_msgbox.xml")DEFINE_XML(IDR_DUI_MAIN_DIALOG,"skin\\xml\\dlg_main.xml")DEFINE_IMGX(IDP_MAIN_DLG_FRAME,"skin\\image\\dlg_bg_frame.png")DEFINE_IMGX(IDP_BTN_WND_CHECKBOX,"skin\\image\\btn_wnd_checkbox.png")DEFINE_IMGX(IDP_BTN_WND_RADIO,"skin\\image\\btn_wnd_radio.png")DEFINE_IMGX(IDP_FOCUS_CHECK,"skin\\image\\focus_checkbox.png")DEFINE_IMGX(IDP_FOCUS_RADIO,"skin\\image\\focus_radio.png")DEFINE_IMGX(IDP_BORDER_EDIT,"skin\\image\\img_edit_border.png")DEFINE_IMGX(IDP_BTN_SYS_CLOSE,"skin\\image\\btn_sys_close.png")DEFINE_IMGX(IDP_SCROLL,"skin\\image\\scrollbar.bmp")

Four

-n .\duires\name2id.xml

表示將index.xml中XML資源中(布局檔案XML)且屬性中帶有layer = ‘‘1"中的控制項name轉化為相應id存放到當前檔案中,我們還記得在index.xml中為IDR_DUI_MAIN_DIALOG設定了layer="1"

所以這裡將根據dlg_main.xml中控制項的name屬性產生其id對照存放到name2id.xml檔案中

產生的name2id.xml內容如下:

<name2id name="DUI-DEMO" id="65536" /><name2id name="maindlg" id="65537" /><name2id name="btn_close" id="1" /><name2id name="btn_msgbox" id="65538" />

Five

-h .\duires\winres.h

只有在產生項目時選擇了“支援ID系統”才會出現此命令。

其內容與name2id.xml是一致的,只是採用#define宏定義格式

/*<------------------------------------------------------------------------------------------------->*//*該檔案由residbuilder2產生,請不要手動修改*//*<------------------------------------------------------------------------------------------------->*/#defineDUI-DEMO65536#definemaindlg65537#definebtn_close1#definebtn_msgbox65538

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.