(
1)迴圈;
2、 通過 while(1
3、 while(1
3.1、在剛開機時,首先 entopstate = state_top_digitalinputs 等待使用者輸入;
3.3、當使用者在ir中輸入menu按鍵;
switch
( u8keycode )
case key_menu:
entvstate = state_tv_init;
entvretval = exit_goto_menu;
u8keycode = key_null;
break
;switch((
))case exit_goto_menu:
entopstate = state_top_menu;
break;(
());
(e_osd_main_menu)()
;就可以show出我們想要show出的主介面了。
enmainmenustate = state_menu_wait;
_ezuistate = e_zui_state_running;
(enmainmenustate)時,就要執行:
(u8keycode)
;u8keycode = key_null;
(en_exe_update_signal_informat);了;
(hwnd_mainframe, msg_keydown, vk_code),post message。
switch
(&msg)
;因為我們剛才發的是key的message所以,執行的以下**:
if(pmsg->message == msg_keydown)}}
#if zui_dbg_recursive
_bindispatchmessage =0;
#endif
//zui_dbg_recursive
return iret;
}3.10、由focus =
getwndfocus()
;得到當前win的focus
(getwndprocid
(focus)
, pmsg)兩個引數的說明:
getwndprocid
(focus),得到當前win的型別(有en_zui_defaultwinproc、en_zui_flippage_winproc、en_zui_effect_winproc等型別)
pmsg:收到的訊息,在本例中收到是按鍵。
(u8 u8winprocid, pmsg msg),根據傳過來的引數,執行:effect_winproc
(msg->hwnd, msg)
;直接呼叫:return
defaultwinproc
(hwnd, pmsg);
本例會執行以下語句:if(
getwndkeyevent
(focus)
)keyevent++;}
對這段**的理解,由getwndkeyevent
(focus)得到當前focus定義的keyevent,如果有定義當前所按鍵的事件if
(keyevent->u16exeactid)
;將定義要執行的事件id傳過去。
for example:
static keyevent _zui_tblseg _menu_picture_mode_key=
,,,,
,,,,
};本例只執行:switch
(act)
;3.15、以按左右鍵為例:
switch
(act)
case en_exe_effect_flippage_left:
case en_exe_effect_flippage_right:;
hwnd hwndfocus =()
;hwnd hwndeffect = hwndfocus;
hwnd hwndnext = hwnd_invalid;
en_flippage dir = en_flippage_none;
/******若當前不是第0個index page則 要找到當前功能的首個page 即屬性為en_zui_flippage_winproc的page**************/
while
((hwndeffect=
(hwndeffect)
)!= hwnd_mainframe )
}/******若當前不是第0個index page則 要找到當前功能的首個page 即屬性為en_zui_flippage_winproc的page**************/
if( hwndeffect == hwnd_mainframe )
return true;
u32 u32data =
(hwndeffect);if
( u32data ==0)
return true;
u32 i;
for(i=
0; i<
countof
(hwndtop)
; i++)=
""="" i=
"">=
countof
(hwndtop)
)return true;
if(act == en_exe_effect_flippage_left)
else
if(act == en_exe_effect_flippage_right)
hwnd child, last_succ;
//2008/4/12: get last successor once
hwnd listwn = hwndnext+2;
last_succ =
(listwn)
;for
(child = listwn+
1; child <= last_succ; child++
) gui_data_flippage *windata =
(gui_data_flippage *
) u32data; windata->pvardata->hwndcurrent = hwndeffect;
windata->pvardata->hwndnext = hwndnext;
/*if(windata->pvardata->hwndnext == hwnd_menu_lock_page)
*/#if enable_dtv
if(windata->pvardata->hwndnext == hwnd_menu_lock_page)
stgensetting.g_blocksyssetting.u8enterlockpage =0;
#endif
if(child == last_succ)
windata->pvardata->hwndnextfocus = windata->pvardata->hwndnext+3;
else
windata->pvardata->hwndnextfocus = child;
windata->pvardata->dir = dir;
(windata->pvardata->hwndcurrent, msg_effect,0)
;(hwnd_menu_main_botton_info_bar)
;return true;
Mstar方案軟體執行基本原理
3.1 在剛開機時,首先 entopstate state top digitalinputs 等待使用者輸入 3.3 當使用者在ir中輸入menu按鍵 switch u8keycode case key menu entvstate state tv init entvretval exit go...
軟體測試基本原理
在過去的40多年裡,測試工作中有一些原理已經被普遍接受,廣泛應用。在測試中,應當始終牢記7條基本原理。原理1 測試可以證明缺陷存在,但不能證明缺陷不存在。測試可以證明產品是失敗的,也就是說產品中有缺陷。但測試不能證明程式中沒有缺陷。適當的測試可以減少測試物件中的隱藏缺陷。即使在測試中沒有發現失效,也...
RCP執行的基本原理
第一步 外掛程式類rcpplugin 系統執行後首先在manisfest.mf檔案中找到bundle activator所對應的外掛程式類,通過該類的靜態方法獲得外掛程式物件的引用,然後獲得外掛程式的各種資訊,包括外掛程式所對應的bundle檔案資訊 log日誌物件和工作台物件等。例如 獲取外掛程式...