1 繪製字串
宣告標頭檔案「gui.h」
設定字型:
void (*pixtel_ui_set_font)(ui_font_type f)=null;
引數f 為需要使用的字型,可以使用系統已經有的字型如:mmi_sublcd_font. 也可以自己定義字型。使用 stfontattribute ***x 定義自己需要的字型。
在 解密mtk文件/mmi/176x220gprs.pdf中有關於中文字型的一些定義
設定文字顯示位置:
void (*pixtel_ui_move_text_cursor)(s32 x,s32 y)=null;
引數 x,y為將要顯示字串的左上角座標。
設定文字顏色:
void (*pixtel_ui_set_text_color)(color c)=null;
color 為乙個結構體。用於定義rgb顏色和alpha通道
typedef struct _color
color;
列印文字:
void (*pixtel_ui_print_text)(ui_string_type_text) = null;
需要注意的是字串前面都需要加l。
2 繪製
如何製作透明背景:
1 首先利用photoshop設計乙個bmp格式
2 [影象][模式]將其顏色改變為索引色
3 [影象][模式]開啟該的顏色表。將第一格的顏色值改為該上沒有用到過的其他顏色。然後確定儲存。
4 將該匯入mtk工程後,該覆蓋在其他上時,背景透明。
mtk不支援png,位於images目錄下的資源檔案不支援jpeg,同樣不支援png。
繪製:void (*pixtel_ui_show_transparent_image)(s32 x,s32 y,ui_image_type i,ui_transparent_color_type t)=null;
該函式以x,y為座標繪製,同時指定顏色t為透明色,即t顏色不顯示,當作透明。
例如在原點位置顯示id為img_global_test的。
pixtel_ui_show_transparent_image(0, 0, get_image(img_global_test), pixtel_ui_transparent_color(255,255,203));
接著,需要設定緩衝區用於顯示在螢幕上,這是必不可少的。
pixtel_ui_blt_double_buffer(0,0,ui_device_width-1, ui_device_height-1);
關於繪製還有很多種方法,
詳細見 解密mtk文件/mmi design doc/pixtel_ui_programmers_manual.pdf
3關於觸控螢幕
1 編寫觸控筆按下時的控制代碼函式,包含使用者所需要的一些響應。例如我們讓觸控筆按下時候,將變數touch_pressed設定為true,同時,pos紀錄了觸控筆落在螢幕上面的座標。
void mmi_pen_down_hdlr(mmi_pen_point_struct pos)
2 呼叫系統函式 mmi_wgui_register_pen_down_handler(mmi_pen_hdlr pen_down_hdlr)
註冊前面的觸控筆按下的控制代碼函式:
mmi_wgui_register_pen_down_handler(mmi_pen_down_hdlr)
然後,觸控筆就可以生效。當我們點下觸控筆時候,touch_pressed為真。
3 對於觸控筆釋放也是一樣的道理,也需要設定釋放的函式mmi_pen_up_hdlr,然後呼叫
mmi_wgui_register_pen_up_handler(mmi_pen_up_hdlr)註冊前面的釋放函式。
在這兩個系統函式中的引數中,mmi_pen_hdlr為函式指標。利用函式指標可以實現乙個通用的函式來實現各種專用的功能。
typedef void (*mmi_pen_hdlr)(mmi_pen_point_struct pos);
4 關於按鍵
類似於觸控筆操作,首先編寫乙個按鍵函式,裡面實現使用者所期望的功能。例如
void key_2_press(void)
然後呼叫系統函式
setkeyhandler(key_2_press,key_2,key_event_down);註冊該函式,並將2號鍵,事件型別與該函式繫結。
作了上面工作,2號鍵就能夠在mtk裡起作用。
5 關於categoryscreen()
在mtk中有各種型別的螢幕顯示。它們彼此的結構一樣,區別就在於之間的標題,按鍵,以及螢幕上面的一些控制項是否相同。
showcategoryxscreen(argument list)
經常用到的這個函式,由應用程式呼叫。引數列表裡面指明了該螢幕中左軟鍵和右軟鍵,標題顯示等等。還可以指明一些特殊的元素如文字輸入框,列表項。
以下面的函式為例:
void showcategory221screen( u16 title,
u16 title_icon,
u16 left_softkey,
u16 left_softkey_icon,
u16 right_softkey,
u16 right_softkey_icon,
gdi_color background_color,
funcptr redraw_content_callback )
title 用於指明該螢幕上的標題欄的名稱。
title_icon 該標題欄所用到的圖示
left_softkey 左軟鍵的字串id
left_softkey_icon 左軟鍵的圖示id
right_softkey右軟鍵的字串id
right_softkey_icon 右軟鍵的圖示id
background_color 背景顏色
redraw_content_callback 用於重畫的**函式指標,一般在主題更新時候由框架呼叫,一般設定為0
6 關於timer和迴圈
在mtk中也可以實現類似於j2me中的迴圈。
首先編寫乙個函式,用於規定的延遲時間到期時候的呼叫。例如
cyclic_timer();
然後呼叫函式 pixtel_ui_start_timer(500,cyclic_timer);
需要注意的是,我們需要將pixtel_ui_start_timer(500,cyclic_timer);寫入到cyclic_timer()中,這樣,每當500毫秒到期時候,函式將呼叫自身,再次進入到該函式,從而實現迴圈,我們在裡面可以新增條件判斷,來實現跳出迴圈等工作。
vmware一些總結
1,用pe在vmware上裝完系統,無法從硬碟啟動,修復mbr引導也沒用。其實是沒有把c盤設定成活動分割槽,用任意工具把c盤設定成活動分割槽即可。俺選了diskgenius。2,vmware進入bios不太容易,主要原因是啟動太快,沒時間按f2。解決辦法 開啟windows xp professio...
CSS一些總結
1.display block 塊元素,預設寬度為100 可以設定元素的寬高,預設佔滿一行。塊元素包括div,h1 h6,form,table,ul,ol等 inline 行內元素,預設寬度為內容的寬度,width和height對inline元素無效,margin top和bottom對行內元素無效...
一些的總結
大學的教育模式是先教你原理,在教你怎麼用工具 而缺少樂趣,一般大牛 的思維模式都是這樣 先知道原理 在用工具 其實對於普通人來講,一般都是 知道原來還有這種利用方式?到 我要用工具來提高效率 廣用效率還不行 我要知道原理 誒好像現在工具滿足不了我的需要了,我要自己新增規則 新增的規則 以及滿足不了我...