青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

專注于服務(wù)器編程、網(wǎng)絡(luò)編程

~~保持一顆平常心~~持之以恒~~
posts - 18, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

一、窗口的繪制


繪制窗體實(shí)際上可以看作是繪制輪廓和繪制組件兩個部分。

我們先看這么一個文件 CustCoordinates.c

這個文件主要是定義了這么一個宏 g_categories_controls_map:

或者類似于這樣的定義,這個數(shù)組就具體的將窗體的輪廓以及窗體的各個組件的位置作出了定義

下面我們以一個具體的例子作為說明:

const U8 category5[] =

{

    5,                                         // 這個代表組件的個數(shù);

    DM_BASE_LAYER_START,                                     // 開始層;

    DM_SCR_BG,                                                             // 背景;

    DM_BASE_CONTROL_SET1,              //表示窗體的基本組成——狀態(tài)欄、標(biāo)題和軟按鍵

    DM_MULTILINE_INPUTBOX1,                   //多行輸入框

    DM_CATEGORY_CONTROLLED_AREA    // 輸入法的部分;

};

這些組件被定義在枚舉結(jié)構(gòu)mmi_dm_control_ids_enum中。


const S16 coordinate_set5[] =

{

    DM_FULL_SCREEN_COORDINATE_FLAG,      

    DM_CONTENT_COORDINATE_FLAG,

    DM_FULL_SCREEN_COORDINATE_FLAG

};

這個數(shù)組是這些組件的屬性;這個屬性主要是指各個組件的坐標(biāo),高度,寬度;

這些數(shù)組里面定義的內(nèi)容通過dm_get_coordinates() 這個函數(shù)映射到 具體的繪制過程中;

在dm_get_coordinates 這個函數(shù)中我們可以看到,這些 DM_FULL_SCREEN_COORDINATE_FLAG常量實(shí)際上都被轉(zhuǎn)化為坐標(biāo)。


現(xiàn)在我們回到剛才的那個函數(shù) ShowCategory..Screen() 中來。下圖是個典型的窗口圖:


以下為例子:


void ShowCategory353Screen(

        U8 *title,

        U16 title_icon,

        U16 left_softkey,

        U16 left_softkey_icon,

        U16 right_softkey,

        U16 right_softkey_icon,

        S32 number_of_items,

        U8 **list_of_items,

        U16 *list_of_icons,

        U8 **list_of_descriptions,

        S32 flags,

        S32 highlighted_item,

        U8 *history_buffer)

{

    /*----------------------------------------------------------------*/

    /* Local Variables                                                */

    /*----------------------------------------------------------------*/

    dm_data_struct dm_data;

    S32 i;

    U8 h_flag;


    /*----------------------------------------------------------------*/

    /* Code Body                                                      */

    /*----------------------------------------------------------------*/

gdi_layer_lock_frame_buffer(); // 鎖定當(dāng)前層的buffer;


// 創(chuàng)建一個列表式的窗口

    create_fixed_icontext_menuitems();

    associate_fixed_icontext_list();

         // 并將窗口下的內(nèi)容,包括標(biāo)題欄,左右軟件,以及各個子菜單的圖標(biāo) 顯示出來;

    ShowListCategoryScreen(

        (UI_string_type) title,

        get_image(title_icon),

        get_string(left_softkey),

        get_image(left_softkey_icon),

        get_string(right_softkey),

        get_image(right_softkey_icon),

        number_of_items);


    if (list_of_descriptions == NULL)

{

        for (i = 0; i < number_of_items; i++)

        {

            add_fixed_icontext_item((UI_string_type) list_of_items[i], wgui_get_list_menu_icon(i, list_of_icons[i]));

            wgui_pop_up_description_strings[i].text_strings[0] = NULL;

       }

    }

    else

    {

        for (i = 0; i < number_of_items; i++)

        {

            add_fixed_icontext_item((UI_string_type) list_of_items[i], wgui_get_list_menu_icon(i, list_of_icons[i]));

            wgui_pop_up_description_strings[i].text_strings[0] = (UI_string_type) list_of_descriptions[i];

        }

}


    h_flag = set_list_menu_category_history(MMI_CATEGORY52_ID, history_buffer);


         // 高亮當(dāng)前選中的ITEM

    if (h_flag)

    {

        fixed_list_goto_item_no_redraw(MMI_fixed_list_menu.highlighted_item);

    }

    else

    {

        fixed_list_goto_item_no_redraw(highlighted_item);

    }

    MMI_title_string = (UI_string_type) title;

    MMI_title_icon = (PU8) get_image(title_icon);

    set_pop_up_descriptions(1, number_of_items, MMI_fixed_list_menu.highlighted_item);

    gdi_layer_unlock_frame_buffer();

// 前面這整個一段是用來繪制一個列表窗口,這部分的內(nèi)容基本上根據(jù)自己的選擇有什么畫什么;


// 而下面的內(nèi)容是每個窗體都共有的部分;

    ExitCategoryFunction = ExitListCategoryScreen;

    dm_setup_category_functions(dm_redraw_category_screen,dm_get_category_history, dm_get_category_history_size);

    dm_data.s32ScrId = (S32) GetActiveScreenId();

    dm_data.s32CatId = MMI_CATEGORY52_ID;

    dm_data.s32flags = 0;

    dm_setup_data(&dm_data);

   dm_redraw_category_screen();

}   /* end of ShowCategory353Screen */


因?yàn)镸TK后面的代碼的gui 部分是用 draw_manager 這個來控制的,因此所有的窗口的控件的實(shí)際繪制過程都是通過 dm_redraw_category_screen(); 這個函數(shù)來實(shí)現(xiàn)的;這個函數(shù)可以幫助我們繪制一些比較特殊的自己需要的組件,當(dāng)然如果我們使用的組件已經(jīng)包含在這個函數(shù)里面,那么直接使用。

可以分析一下這個函數(shù)的流程:

獲取窗體模版的ID; // 這個在showcategory里面實(shí)現(xiàn),dm_data.s32CatId = MMI_CATEGORY52_ID;

                                                                      ↓

根據(jù)模版的ID得到組件的集合和個數(shù);

// control_set_ptr = dm_search_control_set((U16) g_dm_data.s32CatId, &DeafultCoordinateSet_p);

                                                                           ↓

根據(jù)模版ID得到組件屬性標(biāo)識的集合;

// UICtrlAccessPtr_p = dm_search_coordinate_set(g_dm_data.s32ScrId);

                                                                           ↓

鎖定當(dāng)前的frame,各個組件繪制前的任務(wù)準(zhǔn)備就緒;// gdi_layer_lock_frame_buffer();

                                                                           ↓

繪制窗體之前,還可以改變窗體的大小;

// UICtrlAccessPtr_p = dm_get_cat_scr_coordinates(UICtrlAccessPtr_p, &dm_cat_scr_info);

                                                                           ↓

獲取不同組件的不同屬性,并根據(jù)不同的屬性繪制出自己需要的窗口;

// for (u8CtrlCt = 1; u8CtrlCt <= u8NoOfUICtrls; u8CtrlCt++) 這個語句包含的內(nèi)容

                                                                           ↓

全部繪制完畢,整合GDI layer,將當(dāng)前frame 解鎖;


上面已經(jīng)說明了一個窗體的繪制過程。另外與窗體相關(guān)的函數(shù)還有:

Redrawcategory**screen(); 這個是窗體的刷新函數(shù);

Exitcategory**screen() ; 這個是窗體的退出函數(shù)

本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/xzl04/archive/2009/04/14/4068447.aspx

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美高清视频免费观看| 亚洲国产91精品在线观看| 亚洲国产中文字幕在线观看| 久久免费的精品国产v∧| 国产精品一区二区三区免费观看| 亚洲视频视频在线| 亚洲视频一区二区免费在线观看| 欧美日韩国产一区精品一区 | 午夜精品理论片| 国产欧美成人| 麻豆国产va免费精品高清在线| 久久免费国产| 一个人看的www久久| 一区二区欧美在线观看| 国产精品美女999| 久久视频国产精品免费视频在线| 欧美中文在线观看国产| 亚洲激情在线| 一本久道久久综合狠狠爱| 国产九区一区在线| 欧美v日韩v国产v| 国产精品v亚洲精品v日韩精品| 久久9热精品视频| 免费人成精品欧美精品| 在线一区观看| 久久久久一本一区二区青青蜜月| 亚洲美女网站| 午夜性色一区二区三区免费视频| 在线欧美亚洲| 亚洲欧美日韩精品久久| 亚洲国产精品久久91精品| 国产精品99久久久久久宅男| 在线观看日韩www视频免费| 亚洲欧洲综合| 狠狠色伊人亚洲综合成人| 亚洲欧洲一区二区三区久久| 国产欧美一区二区精品忘忧草| 蜜臀av性久久久久蜜臀aⅴ| 国产精品户外野外| 欧美激情麻豆| 国内精品久久久久影院色 | 免费欧美日韩| 国产精品久久7| 亚洲国产综合视频在线观看| 国产精品乱码一区二区三区| 亚洲国产视频a| 一色屋精品亚洲香蕉网站| 国产精品99久久久久久白浆小说| 亚洲激情视频网| 久久精品一区二区| 欧美亚洲综合在线| 欧美视频官网| 亚洲欧洲精品一区二区三区| 伊人久久成人| 欧美在线网站| 久久精品成人一区二区三区蜜臀| 欧美体内谢she精2性欧美| 亚洲国产一区二区三区a毛片| 国产又爽又黄的激情精品视频| 亚洲性视频网址| 亚洲主播在线播放| 国产精品久久久久9999| 99热在这里有精品免费| 99精品福利视频| 欧美乱妇高清无乱码| 欧美激情免费在线| 亚洲欧洲在线一区| 欧美a级理论片| 亚洲电影免费观看高清完整版在线| 国内久久精品| 久久精品国产综合| 麻豆成人精品| 最近看过的日韩成人| 欧美国产日韩视频| 亚洲欧洲日本一区二区三区| 夜色激情一区二区| 欧美日韩精品一区二区三区| 日韩一级片网址| 亚洲欧美另类中文字幕| 国产精品美女久久久免费| 亚洲图片欧洲图片av| 欧美一区二区女人| 国产一区二区三区在线免费观看 | 最新日韩在线| av成人免费在线观看| 欧美视频免费在线| 午夜精品亚洲一区二区三区嫩草| 久久九九电影| 91久久久国产精品| 国产精品福利片| 欧美一区二区三区精品| 欧美freesex交免费视频| 亚洲精品美女免费| 欧美视频国产精品| 欧美一区=区| 亚洲欧洲在线播放| 欧美亚洲免费在线| 在线成人欧美| 欧美午夜三级| 久久久夜精品| 一区二区三区精品视频在线观看| 久久国产主播精品| 最近看过的日韩成人| 国产精品免费久久久久久| 久久久久久网| 一区二区成人精品| 美女亚洲精品| 亚洲欧美日韩精品久久| 亚洲国产小视频| 国产精品国色综合久久| 另类尿喷潮videofree| 99精品视频一区二区三区| 久久网站热最新地址| 一区二区高清视频| 狠狠色噜噜狠狠狠狠色吗综合| 欧美日本亚洲| 久热精品视频在线观看| 在线亚洲欧美视频| 欧美gay视频| 久久久国际精品| 亚洲网站视频福利| 亚洲国产另类精品专区| 国产欧美日韩在线| 欧美日本在线| 欧美a级理论片| 久久精品亚洲精品| 午夜精品成人在线| 一区二区欧美视频| 亚洲三级网站| 亚洲国产欧美一区二区三区丁香婷| 欧美一区久久| 午夜精品福利一区二区蜜股av| 日韩图片一区| 亚洲国产日韩欧美综合久久| 狠狠入ady亚洲精品| 国产农村妇女精品一区二区| 欧美日韩国产天堂| 欧美黄色日本| 欧美国产一区二区| 欧美成人69av| 免费久久精品视频| 六月丁香综合| 欧美高清视频一区二区三区在线观看| 久久久久九九视频| 久久久99国产精品免费| 欧美资源在线观看| 久久精品女人的天堂av| 久久国产精品网站| 欧美在线观看视频| 久久久精品国产一区二区三区| 亚洲欧美在线aaa| 性欧美xxxx大乳国产app| 午夜精品一区二区三区在线播放| 亚洲欧美激情精品一区二区| 亚洲专区国产精品| 欧美一级大片在线免费观看| 久久国产精品黑丝| 久热精品视频在线观看| 免费看的黄色欧美网站| 欧美国产精品劲爆| 欧美色精品天天在线观看视频 | 久久综合给合久久狠狠色| 久久夜色精品国产欧美乱极品| 久久伊人亚洲| 欧美精品一区二区三| 欧美日韩午夜在线| 国产精品一区久久| 一区二区亚洲| 亚洲美女免费精品视频在线观看| 夜夜躁日日躁狠狠久久88av| 亚洲在线一区二区| 久久久在线视频| 亚洲国产精品一区二区尤物区| 亚洲激情第一区| 亚洲一区二区精品在线观看| 久久精品国产综合| 欧美激情精品久久久久久变态| 欧美性猛片xxxx免费看久爱| 国产日韩欧美日韩| 亚洲精品久久久久久久久久久久| 一本久道久久综合中文字幕| 久久av资源网站| 亚洲国产高潮在线观看| 亚洲最新色图| 久久久精品日韩| 欧美性猛交视频| 亚洲国产精品小视频| 欧美亚洲三区| 亚洲人成人一区二区三区| 欧美一级久久久| 欧美日韩免费一区| 在线观看日产精品| 性欧美8khd高清极品| 亚洲国产精品va| 久久久99久久精品女同性| 国产精品a久久久久久| 亚洲国产欧美一区二区三区丁香婷| 亚洲免费影视第一页| 亚洲国产精品成人精品| 欧美一区二区三区日韩视频|