主要簡單分析一下左右軟件的事件,以左軟鍵事件爲例
牽涉到的常用函數:
void SetKeyHandler( FuncPtr funcPtr, U16 keyCode, U16 keyType );
void SetLeftSoftkeyFunction( void (*f)(void), MMI_key_event_type k );
void ChangeLeftSoftkey( U16 s, U16 i );
1. SetKeyHandler與SetLeftSoftkeyFunction
(1). SetKeyHandler
主要作用就是將需要起作用的函數的指針(funcPtr)
-->全局矩陣數組currKeyFuncPtrs[keyCode][keyType]的指定位置 ;
(2). SetLeftSoftkeyFunction
該函數內部主要流程:
Step1. call register_left_softkey_handler( )
這個函數call SetKeyHandler: 存儲需要起作用的函數(left_softkey_down/left_softkey_up)
以left_softkey爲例, 該函數首先首先刷新按鍵區域圖像(redraw_softkey),
然後執行關聯函數(softkey_functions[key][k]).
Step2. 在上一步裏我們會發現,softkey_functions[key][k]裏的函數指針沒有初始化
通過 call set_left_softkey_function(f, k);
--->softkey_functions[key][k] = f;
這樣,就成功的把按鍵按下/放開的作用函數與具體的動作關聯起來了。
Step3. 最後call SetInputboxLSKFunction(f)
--->將上述函數與特定的輸入(如觸摸筆)關聯起來。
(3). 以上兩個函數的主要區別:
SetLeftSoftkeyFunction可以識別長按狀態並且可以關聯觸摸筆操作等。
2. ChangeLeftSoftkey
主要執行流程:
Step1. call change_left_softkey: 設置左軟鍵圖表,文字
Step2. redraw_softkey: 刷新左軟鍵顯示區域
本文來源於無聲無息 http://www.imeans.net/ , 原文地址:http://www.imeans.net/post/201004/43.html