窗口创建过程(hello sprd):
(1)创建窗口TABLE()
宏 WINDOW_TABLE定义了窗口数据信息表,在window_parse.h
WINDOW_TABLE(MMI_HELLO_SPRD_WIN_TAB)=
{
WIN_ID(MMI_HELLO_SPRD_WIN_ID),//窗口ID
WIN_FUNC((uint32)HandleHelloSprdWinMsg), //处理函数
WIN_TITLE(TXT_HELLO_TITLE),//窗口标题
WIN_SOFTKEY(STXT_OK, TXT_NULL, STXT_RETURN),
END_WIN
};
(2)注册窗口ID
暂放于MMI_APP/COMMON/H/mmi_id.def中
WIN_ID_DEF(MMI_HELLO_SPRD_WIN_ID,"MMI_HELLO_SPRD_WIN_ID")
(3)MMK位于mmk_app.h中
在idle窗口的处理函数里面加case_msg_app_ok里加一句:
MMK_CreateWin((uint32*)MMI_HELLO_SPRD_WIN_TAB,PNULL);
(4)写窗口处理函数,否则是一个空窗口 不会显示。(窗口回调函数)
首先要申明,LOCAL MMI_RESULT_E HandleHelloSprdWinMsg(
MMI_WIN_ID_T win_id,
MMI_MESSAGE_ID_E msg_id,
DPARAM param
);
然后函数实现:窗口的处理函数其实就是一个大的CASE语句,主要处理来自于系统的内部和外部消息。
LOCAL MMI_RESULT_E HandleHelloSprdWinMsg(
MMI_WIN_ID_T win_id,
MMI_MESSAGE_ID_E msg_id,
DPARAM param
)
{ MMI_RESULT_E recode=MMI_RESULT_TRUE;
switch(msg_id)
{
case MSG_OPEN_WINDOW: //打开窗口的消息
break;
case MSG_FULL_PAINT: //刷新窗口消息
{
GUI_LCD_DEV_INFO lcd_dev_info ={GUI