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

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

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

ShowCategory200Screen

Posted on 2009-12-19 10:59 ~William~ 閱讀(603) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MTK_MMI

MTK: ShowCategory200Screen() 收藏
 
說明:

1.所有的ShowScreen都有2個(gè)ID:Screen ID(EntryNewScreen()函數(shù)中設(shè)置的ID),以及模板ID(Category ID)。

2.所有的窗口模板的基本設(shè)置都保存在一個(gè)全局變量:g_categories_controls_map中。它的結(jié)構(gòu)是:

typedef struct

{

    U16 category_id;                           模板ID號(hào)

    U8 *control_set_p;                        這個(gè)模板的組件指針

    S16 *default_coordinate_set_p;   這個(gè)模板中各組件屬性的指針

    S16 *rotated_coordinate_set_p;  其他特殊屬性指針

} dm_category_id_control_set_map_struct;

 

例如Category200:{MMI_CATEGORY200_ID, (U8 *) category200, (S16 *) coordinate_set200, NULL},

組件:

const U8 category200[] =

{

    5,

    DM_BASE_LAYER_START,

    DM_SCR_BG,

    DM_BASE_CONTROL_SET1,

    DM_CATEGORY_CONTROLLED_AREA,

    DM_SINGLELINE_INPUTBOX1

};

屬性:

const S16 coordinate_set200[] =

{

    DM_FULL_SCREEN_COORDINATE_FLAG,

    DM_CONTENT_COORDINATE_FLAG,

    26,

       MAIN_LCD_DEVICE_HEIGHT - MMI_BUTTON_BAR_HEIGHT - MMI_SINGLELINE_INPUTBOX_HEIGHT - 2,

       MAIN_LCD_DEVICE_WIDTH - 29,

       MMI_SINGLELINE_INPUTBOX_HEIGHT,

       DM_NO_FLAGS

};

 

3.一個(gè)Screen ID的屬性變量:g_screenid_coordinate_sets_map[]。其中只包含了幾個(gè)Screen的屬性指針,可能是用來設(shè)置一些特殊窗口的屬性。結(jié)構(gòu)是:

typedef struct

{

    S32 screen_id;

    S16 *coordinate_set_p;

} dm_screen_id_coordinate_set_map_struct;

 

4.2個(gè)函數(shù):

(1)U8 *dm_search_control_set(S32 category_id, S16 **default_coordinate_set_p)

       獲取某個(gè)模板的組件和組件屬性指針。

(2)S16 *dm_search_coordinate_set(S32 ScrId)

       獲取Screen ID的屬性指針。

進(jìn)入ShowCategory200Screen():MTK的電話簿快速查詢

ShowCategory200Screen()

       dm_data_struct dm_data;             定義變量,賦值后,帶入全局變量:g_dm_data。最后在dm_redraw_category_screen()中使用。

      

       gdi_layer_lock_frame_buffer();     鎖屏

      

       create_fixed_icontext_menuitems();     設(shè)置fixed list menuitem的公共屬性MMI_fixed_icontext_menuitem,以及每個(gè)menuitems: MMI_fixed_icontext_menuitems[i]和指針

                                                               MMI_fixed_menuitem_pointers[i]

       associate_fixed_icontext_list();            把上面設(shè)置的menuitems與框架MMI_fixed_list_menu結(jié)合起來,設(shè)置icontext的menuitem的接口函數(shù)。

       init_dynamic_item_buffer(number_of_items, get_item_func, get_hint_func, UI_dummy_function);       裝載動(dòng)態(tài)menuitem:dynamic_item_buffer:獲取item,hint的函數(shù),以及開始,結(jié)束,

                                                               總的items數(shù)目;并調(diào)用函數(shù)設(shè)置MMI_fixed_icontext_menuitems[]中的每個(gè)menuitem。

       設(shè)置shotcut位置MMI_menu_shortcut_box。

       register_dynamic_list_keys()           注冊(cè)方向鍵的響應(yīng)。

       resize_fixed_list(240,191)             設(shè)置icontext menuitem框架的位置尺寸,以及fixed list和滾動(dòng)條的位置尺寸

       設(shè)置輸入框的位置尺寸

       dynamic_list_goto_item_no_redraw(highlighted_item = 0);

              gui_dynamic_list_menu_goto_item(&MMI_fixed_list_menu, item_index);

                     gui_dynamic_list_menu_locate_highlighted_item(m);

       wgui_setup_singleline_inputbox()    設(shè)置輸入框,包括信息框

              SetKeyHandler(wgui_handle_qsearch_singleline_inputbox_change_input_mode, KEY_POUND, KEY_EVENT_DOWN);       #鍵改變輸入法

       gui_set_single_line_input_box_theme(&MMI_singleline_inputbox, &cat200_singleline_inputbox_theme);                                   輸入框主題

       resize_dynamic_icontext_menuitems_to_list_width();

       set_fixed_icontext_positions                設(shè)置icontext的icon和text 的坐標(biāo)

       singleline_inputbox_input_callback();    右軟件標(biāo)簽

       設(shè)置左軟件標(biāo)簽

       gdi_layer_unlock_frame_buffer();        解屏

       ExitCategoryFunction = ExitCategory200Screen;

    dm_setup_category_functions(dm_redraw_category_screen, GetCategory200History, GetCategory200HistorySize);   /* 102605 quick search history Calvin add */

    dm_data.s32flags = DM_CLEAR_SCREEN_BACKGROUND;           設(shè)置dm_data

    dm_data.s32flags |= DM_SHOW_VKPAD;

    dm_data.s32ScrId = (S32) GetActiveScreenId();

    dm_data.s32CatId = MMI_CATEGORY200_ID;

    dm_setup_data(&dm_data);                                                           設(shè)置g_dm_data

       dm_register_category_controlled_callback(RedrawCategoryControlledArea200Screen);          注冊(cè)控制區(qū)域的CBACK函數(shù)

       dm_register_vkpad_callback(cat200_virtual_keypad_callback);                                            畫虛擬鍵盤的CBACK

       dm_redraw_category_screen();

      

dm_redraw_category_screen()

       S16 *UICtrlAccessPtr_p = NULL, *DeafultCoordinateSet_p = NULL;      Category200模板的組件屬性指針

       U8 *control_set_ptr = NULL;                                                               Category200模板的組件指針

       control_set_ptr = dm_search_control_set((U16) g_dm_data.s32CatId, &DeafultCoordinateSet_p);        獲取模板200的組件和組件默認(rèn)屬性指針

       u8NoOfUICtrls = control_set_ptr[0];           組件第一個(gè)參數(shù)是組件個(gè)數(shù)

      

       UICtrlAccessPtr_p = dm_search_coordinate_set(g_dm_data.s32ScrId);    獲取組件屬性。即:UICtrlAccessPtr_p是組件屬性指針,如果UICtrlAccessPtr_p為空,就設(shè)置為默認(rèn)屬性。

       gdi_layer_lock_frame_buffer();

       UICtrlAccessPtr_p = dm_get_cat_scr_coordinates(UICtrlAccessPtr_p, &dm_cat_scr_info);          Get category screen size,在畫組件之前,根據(jù)屬性要獲取這個(gè)窗口的大小。

                                                                             此時(shí),屬性指針下移一個(gè)位置,指向下一個(gè)屬性。

      

       gdi_layer_set_active(GDI_LAYER_MAIN_BASE_LAYER_HANDLE);      設(shè)置基本層

       gui_set_clip(dm_cat_scr_info.x1, dm_cat_scr_info.y1, dm_cat_scr_info.x2, dm_cat_scr_info.y2);       設(shè)置窗口剪切區(qū)

       gdi_draw_solid_rect(0, 0, UI_device_width - 1, UI_device_height - 1, GDI_COLOR_TRANSPARENT);      畫背景

      

       for (u8CtrlCt = 1; u8CtrlCt <= u8NoOfUICtrls; u8CtrlCt++)      開始畫組件

       {

              switch (control_set_ptr[u8CtrlCt])       判斷組件

              {

                     case DM_BASE_LAYER_START:

            {

                if (redraw_type != REDRAW_2_REDRAW)

                {

                    dm_setup_base_layer();

                }

                break;

            }

                     case DM_BASE_CONTROL_SET1:

            {

                dm_setup_and_draw_base_control_set(&UICtrlAccessPtr_p);          畫基本組件:status, title, button

                                   control_set_ptr = dm_get_base_control_set();                          獲取基本組件指針

                                UICtrlAccessPtr_p = dm_get_base_coordinate_set();                獲取基本組件屬性

                                   u8NoOfUICtrls = control_set_ptr[0];

                                for (u8CtrlCt = 1; u8CtrlCt <= u8NoOfUICtrls; u8CtrlCt++)

                                   {    

                                          畫3個(gè)基本組件。注意要傳進(jìn)入屬性指針作為參數(shù)。因?yàn)樵诋嫷臅r(shí)候,要根據(jù)組件屬性,去獲取坐標(biāo)等參數(shù)。

                                          dm_setup_and_draw_status_icons(&UICtrlAccessPtr_p);

                                          dm_setup_and_draw_title(&UICtrlAccessPtr_p);

                                          dm_setup_and_draw_button_bar(&UICtrlAccessPtr_p);

                                   }

                break;

            }

                     case DM_CATEGORY_CONTROLLED_AREA:

            {

                dm_setup_and_draw_category_controlled_area(&UICtrlAccessPtr_p);

                                   *UICtrlAccessPtr_p = dm_get_coordinates(*UICtrlAccessPtr_p, &dm_category_controlled_area_info);       根據(jù)屬性輸入坐標(biāo)

                                   (*dm_category_controlled_area_callback) (&dm_category_controlled_area_info);    即注冊(cè)的CBACK:RedrawCategoryControlledArea200Screen()

                                          gdi_layer_lock_frame_buffer();     鎖屏

                                          wgui_redraw_singleline_input_information_bar();       畫輸入法提示框

                                          show_dynamic_list();                                              畫fixed list menu

                                          gui_draw_rectangle()                                               畫輸入框

                                          gui_show_image()                                              輸入框前面的image

                                          gdi_layer_unlock_frame_buffer();

                                       gdi_layer_blt_previous(0, 0, UI_device_width - 1, UI_device_height - 1);

                break;

            }

                     case DM_SINGLELINE_INPUTBOX1:

            {

                dm_setup_and_draw_singleline_inputbox(&UICtrlAccessPtr_p);

                                   *UICtrlAccessPtr_p = dm_get_coordinates(*UICtrlAccessPtr_p, &dm_singleline_inputbox_info);         根據(jù)屬性,獲取坐標(biāo)

                                   show_singleline_inputbox();

                break;

            }

              }

       }     到for退出后,所有的控件就畫好了

      

       gdi_layer_unlock_frame_buffer();

       gdi_layer_blt()

 

本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/xqq2009/archive/2009/09/13/4546713.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>
            国产精品久久久久久久免费软件 | 欧美亚洲免费高清在线观看| 欧美专区中文字幕| 亚洲人成小说网站色在线| 亚洲视频欧洲视频| 亚洲精品一区二区三| 亚洲欧美激情视频在线观看一区二区三区 | 99视频精品全部免费在线| 亚洲视频电影图片偷拍一区| 亚洲激情电影中文字幕| 香蕉乱码成人久久天堂爱免费 | 午夜精品福利视频| 欧美二区在线播放| 久久米奇亚洲| 国产精品影院在线观看| 亚洲人永久免费| 一区二区视频免费完整版观看| 亚洲影院色无极综合| 亚洲一区在线观看免费观看电影高清| 欧美jizzhd精品欧美喷水 | 午夜精品久久99蜜桃的功能介绍| 欧美jizz19性欧美| 另类综合日韩欧美亚洲| 国产一区二三区| 新67194成人永久网站| 亚洲欧美日韩一区在线| 国产精品国产三级国产普通话99 | 欧美激情乱人伦| 1024亚洲| 久久综合国产精品| 乱人伦精品视频在线观看| 国产一区二区三区久久 | 欧美自拍丝袜亚洲| 久久久高清一区二区三区| 国产日韩成人精品| 亚洲欧美日本另类| 欧美在线视频免费| 国产欧美日韩综合精品二区| 亚洲欧美一区二区激情| 久久精品视频在线看| 国语自产精品视频在线看抢先版结局 | 欧美日本一区二区三区| 亚洲欧洲日韩在线| 一区二区三区视频在线| 欧美日韩久久不卡| 夜夜爽www精品| 午夜久久久久久久久久一区二区| 国产精品一区二区欧美| 欧美在线视频导航| 欧美 日韩 国产精品免费观看| 激情久久综艺| 欧美激情视频在线播放 | 在线成人小视频| 欧美成人精品| 一本色道精品久久一区二区三区| 亚洲欧美日韩系列| 国产一区深夜福利| 欧美ab在线视频| 一区二区三区日韩| 久久久久久夜| 亚洲人体一区| 国产日韩精品在线| 暖暖成人免费视频| 一本一道久久综合狠狠老精东影业 | 一区二区三区毛片| 久久久久久久精| 99精品视频免费| 国产精品视频最多的网站| 久久久久久穴| 亚洲午夜精品在线| 久热精品视频在线观看一区| 99精品99| 国产综合自拍| 欧美午夜视频在线观看| 久久成人国产| 亚洲色图在线视频| 女生裸体视频一区二区三区 | 日韩一级免费观看| 国产伦精品免费视频| 久久综合色婷婷| 一区二区三区国产精品| 欧美国产精品va在线观看| 亚洲一区国产一区| 亚洲国产视频一区二区| 国产精品自拍一区| 欧美人与性动交α欧美精品济南到| 午夜久久美女| 一本色道久久综合狠狠躁的推荐| 免费在线一区二区| 午夜在线视频一区二区区别| 一本一本久久| 亚洲激情在线| 一区三区视频| 国产偷国产偷精品高清尤物| 欧美日韩日日骚| 欧美一区二区三区久久精品| 亚洲国产精品一区二区久 | 国产专区欧美精品| 国产精品免费网站| 欧美日韩国产一区二区| 麻豆精品视频| 久久综合精品国产一区二区三区| 亚洲一区bb| 99精品久久久| 一区二区高清视频| 亚洲美女在线看| 亚洲精美视频| 亚洲国产精品免费| 欧美激情一区二区三区不卡| 久久综合狠狠综合久久综合88| 久久人人超碰| 久久免费黄色| 老色鬼精品视频在线观看播放| 久久xxxx精品视频| 久久岛国电影| 欧美在线播放一区| 欧美中文字幕在线| 久久精品国产亚洲a| 久久精品五月婷婷| 久久九九全国免费精品观看| 久久视频免费观看| 老色鬼久久亚洲一区二区| 蜜臀av在线播放一区二区三区| 久久网站免费| 亚洲第一主播视频| 亚洲国产精品va在看黑人| 亚洲区免费影片| 一区二区久久久久| 亚洲欧美网站| 久久伊人免费视频| 欧美黄色影院| 国产精品视频99| 黄色亚洲在线| 91久久国产自产拍夜夜嗨| 亚洲美女一区| 午夜精品美女自拍福到在线| 久久精品亚洲一区二区| 欧美11—12娇小xxxx| 欧美高清视频免费观看| 日韩午夜在线观看视频| 亚洲一区二区三区成人在线视频精品| 欧美在线欧美在线| 免费观看欧美在线视频的网站| 欧美日韩成人在线| 国产精品亚洲精品| 在线看片一区| 这里只有精品丝袜| 久久国产天堂福利天堂| 亚洲电影观看| 亚洲视频视频在线| 久久久久国产精品人| 欧美日韩国产免费| 国产一区二区精品久久91| 亚洲三级视频在线观看| 亚洲欧美在线免费| 欧美国产亚洲精品久久久8v| 这里只有精品在线播放| 久久久在线视频| 国产精品国产自产拍高清av| 在线欧美三区| 亚欧美中日韩视频| 亚洲黄页视频免费观看| 欧美伊久线香蕉线新在线| 欧美区视频在线观看| 好看的av在线不卡观看| 亚洲视频精选在线| 免费国产自线拍一欧美视频| 在线亚洲免费| 欧美黑人在线播放| 国内精品免费在线观看| 亚洲一区二区在线| 亚洲第一精品夜夜躁人人躁| 亚洲欧美日韩国产综合在线 | 欧美午夜一区二区| 亚洲狠狠丁香婷婷综合久久久| 欧美专区在线| 亚洲精选91| 蜜臀av国产精品久久久久| 国产视频一区在线观看| 一区二区三区视频在线| 欧美国产一区二区| 久久久久www| 国产丝袜美腿一区二区三区| 一本色道精品久久一区二区三区 | 欧美激情视频一区二区三区不卡| 激情综合亚洲| 久久久久久午夜| 亚洲永久在线| 国产精品久久久999| 99精品国产福利在线观看免费| 免费一级欧美在线大片| 久久精品系列| 好看不卡的中文字幕| 欧美在线高清| 欧美一级淫片播放口| 国产精品av一区二区| 亚洲视频在线一区| 在线视频日韩精品| 国产精品黄色| 亚洲欧美日韩中文视频|