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

專注于服務器編程、網絡編程

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

一、窗口的繪制


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

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

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

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

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

const U8 category5[] =

{

    5,                                         // 這個代表組件的個數;

    DM_BASE_LAYER_START,                                     // 開始層;

    DM_SCR_BG,                                                             // 背景;

    DM_BASE_CONTROL_SET1,              //表示窗體的基本組成——狀態欄、標題和軟按鍵

    DM_MULTILINE_INPUTBOX1,                   //多行輸入框

    DM_CATEGORY_CONTROLLED_AREA    // 輸入法的部分;

};

這些組件被定義在枚舉結構mmi_dm_control_ids_enum中。


const S16 coordinate_set5[] =

{

    DM_FULL_SCREEN_COORDINATE_FLAG,      

    DM_CONTENT_COORDINATE_FLAG,

    DM_FULL_SCREEN_COORDINATE_FLAG

};

這個數組是這些組件的屬性;這個屬性主要是指各個組件的坐標,高度,寬度;

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

在dm_get_coordinates 這個函數中我們可以看到,這些 DM_FULL_SCREEN_COORDINATE_FLAG常量實際上都被轉化為坐標。


現在我們回到剛才的那個函數 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(); // 鎖定當前層的buffer;


// 創建一個列表式的窗口

    create_fixed_icontext_menuitems();

    associate_fixed_icontext_list();

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

    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);


         // 高亮當前選中的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();

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


// 而下面的內容是每個窗體都共有的部分;

    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 */


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

可以分析一下這個函數的流程:

獲取窗體模版的ID; // 這個在showcategory里面實現,dm_data.s32CatId = MMI_CATEGORY52_ID;

                                                                      ↓

根據模版的ID得到組件的集合和個數;

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

                                                                           ↓

根據模版ID得到組件屬性標識的集合;

// UICtrlAccessPtr_p = dm_search_coordinate_set(g_dm_data.s32ScrId);

                                                                           ↓

鎖定當前的frame,各個組件繪制前的任務準備就緒;// gdi_layer_lock_frame_buffer();

                                                                           ↓

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

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

                                                                           ↓

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

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

                                                                           ↓

全部繪制完畢,整合GDI layer,將當前frame 解鎖;


上面已經說明了一個窗體的繪制過程。另外與窗體相關的函數還有:

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

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

本文來自CSDN博客,轉載請標明出處: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精品国产麻豆| 欧美国产日韩a欧美在线观看| 久久女同互慰一区二区三区| 亚洲国产另类 国产精品国产免费| 亚洲成色www久久网站| 免费欧美在线| 亚洲午夜黄色| 性亚洲最疯狂xxxx高清| 在线看片成人| 一二三区精品| 韩日欧美一区二区三区| 欧美国产一区二区| 国产精品a级| 久久综合给合| 欧美视频不卡中文| 麻豆国产va免费精品高清在线| 欧美电影电视剧在线观看| 亚洲女爱视频在线| 久久天天综合| 午夜伦欧美伦电影理论片| 久久婷婷成人综合色| 一区二区三区蜜桃网| 久久久999成人| 亚洲男人av电影| 欧美xart系列高清| 欧美在线看片| 欧美先锋影音| 欧美激情一区在线| 国产午夜亚洲精品羞羞网站 | 午夜精品美女久久久久av福利| 久久精品一区二区三区中文字幕 | 玉米视频成人免费看| 亚洲精品一级| 影音先锋国产精品| 亚洲女女做受ⅹxx高潮| 99视频精品全国免费| 久久久福利视频| 性欧美暴力猛交另类hd| 欧美精品一区在线发布| 麻豆精品视频在线观看视频| 国产精品一区二区欧美| 亚洲日本黄色| 亚洲欧洲一二三| 久久亚洲国产成人| 狂野欧美激情性xxxx| 国产精品入口麻豆原神| 99riav国产精品| 一区二区日韩免费看| 欧美成年人网| 亚洲国产成人精品久久久国产成人一区 | 久久久久久久一区二区| 欧美亚洲在线视频| 国产精品毛片大码女人| 亚洲美女毛片| 夜夜嗨av一区二区三区四季av| 免费成年人欧美视频| 蜜桃av一区二区| 在线电影一区| 麻豆精品视频在线| 欧美大片免费看| 亚洲国产一区二区精品专区| 久久成人18免费网站| 久久夜色精品| 1000精品久久久久久久久| 久久久99久久精品女同性 | 黄色成人精品网站| 久久精品国产99| 久久一区亚洲| 亚洲电影在线看| 免费欧美日韩| 亚洲三级电影全部在线观看高清| 99riav久久精品riav| 欧美日韩免费看| 亚洲欧美影音先锋| 免费永久网站黄欧美| 亚洲激情电影在线| 欧美精品在线网站| 亚洲一区二区综合| 久久亚洲综合网| 亚洲免费av网站| 欧美日韩在线电影| 性视频1819p久久| 欧美激情a∨在线视频播放| 亚洲乱码国产乱码精品精天堂| 欧美日韩在线视频一区| 午夜免费在线观看精品视频| 欧美va亚洲va国产综合| aaa亚洲精品一二三区| 国产精品一区二区男女羞羞无遮挡| 欧美在线啊v一区| 亚洲国产精品一区制服丝袜 | 国产目拍亚洲精品99久久精品 | 欧美一区二区三区在线视频 | 久久国产精品久久w女人spa| 一区二区三区在线视频观看| 欧美高清在线视频| 亚洲欧美日韩视频一区| 亚洲人成亚洲人成在线观看| 午夜欧美不卡精品aaaaa| 亚洲国产一区二区a毛片| 国产精品久线观看视频| 欧美va天堂| 欧美一级成年大片在线观看| 亚洲黄色免费网站| 欧美一区激情视频在线观看| 亚洲美女视频在线观看| 国产综合欧美| 国产精品久久久久影院亚瑟| 欧美69wwwcom| 欧美在线观看一区二区| 亚洲精品在线观| 欧美成人精品在线| 久久激情视频久久| 亚洲尤物精选| 亚洲色无码播放| 亚洲九九精品| 亚洲经典在线| 亚洲成人影音| 精品电影一区| 国产一区二区三区四区三区四| 国产精品va在线播放我和闺蜜| 免费高清在线视频一区·| 欧美一区二区在线免费播放| 国产精品99久久久久久久vr | 9久re热视频在线精品| 欧美激情小视频| 欧美α欧美αv大片| 久久精品一区二区三区四区 | 久久精品国产精品亚洲精品| 亚洲欧美日韩第一区| 中文欧美字幕免费| 亚洲精品国产拍免费91在线| 亚洲高清不卡一区| 亚洲缚视频在线观看| 精品电影一区| 亚洲高清在线观看一区| 亚洲第一精品在线| 好吊一区二区三区| 亚洲大胆视频| 亚洲精品偷拍| 一区二区三区免费网站| 亚洲深夜福利网站| 亚洲天堂成人在线视频| 亚洲免费影视第一页| 欧美一区日韩一区| 久久久久看片| 欧美凹凸一区二区三区视频| 欧美顶级少妇做爰| 亚洲精品日产精品乱码不卡| 99天天综合性| 午夜精品久久久99热福利| 久久精品一本| 欧美激情一区二区三区| 欧美日韩在线亚洲一区蜜芽 | 欧美ed2k| 欧美日韩中文在线| 国产日本欧美在线观看| 激情国产一区二区| 亚洲日韩视频| 欧美亚洲免费电影| 美腿丝袜亚洲色图| 亚洲精品日韩欧美| 欧美亚洲免费电影| 欧美暴力喷水在线| 国产精品麻豆成人av电影艾秋| 国产亚洲精品一区二555| 亚洲级视频在线观看免费1级| 亚洲午夜激情网站| 久久久久免费视频| 亚洲人精品午夜| 校园激情久久| 欧美精品一区二区三区在线看午夜 | 亚洲综合清纯丝袜自拍| 久久精品视频在线播放| 欧美日韩黄色一区二区| 国产亚洲欧美一级| 亚洲视频在线观看网站| 久久久久在线观看| 一区二区三区 在线观看视频| 久久精品2019中文字幕| 欧美视频一区二区三区四区| 在线观看欧美| 亚洲欧美日韩精品久久奇米色影视| 美女999久久久精品视频| 夜夜爽www精品| 另类成人小视频在线| 国产视频一区在线观看| 亚洲视频欧美视频| 欧美国产精品v| 久久精品夜色噜噜亚洲aⅴ| 欧美亚洲不卡| 一本久道久久综合婷婷鲸鱼| 久久精品国产精品亚洲精品|