移植中国象棋到展讯6530平台(3)-----c目录中相关文件的源码

其中 c 目录中就一个文件mmishopping_chess_wintab.c,其中部分代码如下(对外接口是函数MMISHOPPING_OpenChessWin):

LOCAL MMI_RESULT_E  HandleShoppingChessWin(
                            MMI_WIN_ID_T win_id,
                            MMI_MESSAGE_ID_E msg_id,
                            DPARAM param);

WINDOW_TABLE( MAINMENU_SHOPPING_CHESS_WIN_TAB ) = 
{
    WIN_FUNC( (uint32)HandleShoppingChessWin ),
    WIN_ID( MMISHOPPING_CHESS_WIN_ID ),
    END_WIN
};

PUBLIC BOOLEAN MMISHOPPING_OpenChessWin(void)
{
    return (MMK_CreateWin((uint32*)MAINMENU_SHOPPING_CHESS_WIN_TAB,PNULL));
}

LOCAL MMI_RESULT_E  HandleShoppingChessWin(
                            MMI_WIN_ID_T win_id, 
                            MMI_MESSAGE_ID_E msg_id, 
                            DPARAM param
)
{
    LOCAL GUI_POINT_T point[8] = {0};
    MMI_RESULT_E     recode       = MMI_RESULT_TRUE;
    GUI_LCD_DEV_INFO lcd_dev_info = {GUI_MAIN_LCD_ID,GUI_BLOCK_MAIN};
    GUI_RECT_T full_rect = MMITHEME_GetFullScreenRect();
    LOCAL BOOLEAN is_first_move = FALSE;
    switch(msg_id)
    {
        case MSG_OPEN_WINDOW:
            //CreateShoppingChesswinLayer(&Shopping_Chesswin_Bg_Layer,TRUE,TRUE);
            //CreateShoppingChesswinLayer(&Shopping_Chesswin_Fg_Layer,FALSE,FALSE);
            //CreateShoppingChesswinLayer(&Shopping_Chesswin_TpMove_Layer,FALSE,FALSE);
            Shopping_Chesswin_Bg_Layer = CreateShoppingChesswinBgLayer();
            Shopping_Chesswin_Fg_Layer = CreateShoppingChesswinFgLayer();
            Shopping_Chesswin_TpMove_Layer = CreateShoppingChesswinTpMoveLayer();
            ShoppingChesswinAppendLayer(&Shopping_Chesswin_Bg_Layer,UILAYER_LEVEL_NORMAL);
            ShoppingChesswinAppendLayer(&Shopping_Chesswin_Fg_Layer,UILAYER_LEVEL_NORMAL);
            ShoppingChesswinAppendLayer(&Shopping_Chesswin_TpMove_Layer,UILAYER_LEVEL_NORMAL);
            UILAYER_BltLayerToLayer(&lcd_dev_info,&Shopping_Chesswin_Bg_Layer,&full_rect,TRUE);
            UILAYER_BltLayerToLayer(&lcd_dev_info,&Shopping_Chesswin_Fg_Layer,&full_rect,TRUE);
            UILAYER_BltLayerToLayer(&lcd_dev_info,&Shopping_Chesswin_TpMove_Layer,&full_rect,TRUE);
            DisplayShoppingChesswinBgLayer();
            ShoppingChessEveluationInit();
            ShoppingChesswinInit(win_id);
            //人开局走棋
            ShoppingChessDisplayInfo(TXT_MAN_GO_NOW);
        break;

        case MSG_TP_PRESS_DOWN:
            HandleShoppingChessTpDownMSG(win_id,param);
            is_first_move = TRUE; //此参数用来清掉move时选中处的显示区域
            break;

        case MSG_TP_PRESS_MOVE:
            HandleShoppingChessTpMoveMSG(win_id,param,is_first_move);
            is_first_move = FALSE;
            break;

        case MSG_TP_PRESS_UP:
            HandleShoppingChessTpUpMSG(win_id,param);
            if(is_man_go_done)
            {
                is_man_go_done = FALSE;
                if(ShoppingChessWhoIsWin(&Chessman.m_ChessBoard) == MAN_WIN)
                {
                    ShoppingChessDisplayInfo(TXT_MAN_WIN);
                }
                else
                {
                    //对话框显示"现在计算机在走"
                    ShoppingChessDisplayInfo(TXT_COM_GO_NOW);
                    MMK_PostMsg(win_id,SHOPPING_CHESS_COM_MOVE_MSG,PNULL,PNULL);
                }
            }
            break;

        case SHOPPING_CHESS_MAN_MOVE_MSG:
            //对话框显示"现在该你走"
            if(ShoppingChessWhoIsWin(&Chessman.m_ChessBoard) == COM_WIN)
            {
                ShoppingChessDisplayInfo(TXT_MAN_LOSE);
            }
            else
            {
                ShoppingChessDisplayInfo(TXT_MAN_GO_NOW);
            }
            break;

        case SHOPPING_CHESS_COM_MOVE_MSG:
            //这里计算机走子;需考虑算法等......
            ShoppingChessSearchAGoodMove(&Chessman.m_ChessBoard);
            RefreshShoppingChesswinFgLayer(win_id);
            MMK_PostMsg(win_id,SHOPPING_CHESS_MAN_MOVE_MSG,PNULL,PNULL);
            break;

        case MSG_GET_FOCUS:
            ShoppingChesswinAppendLayer(&Shopping_Chesswin_Fg_Layer,UILAYER_LEVEL_NORMAL);
            ShoppingChesswinAppendLayer(&Shopping_Chesswin_TpMove_Layer,UILAYER_LEVEL_NORMAL);
            UILAYER_BltLayerToLayer(&lcd_dev_info,&Shopping_Chesswin_Fg_Layer,&full_rect,TRUE);
            UILAYER_BltLayerToLayer(&lcd_dev_info,&Shopping_Chesswin_TpMove_Layer,&full_rect,TRUE);
            RefreshShoppingChesswinFgLayer(win_id);
            break;

        case MSG_CTL_PENOK:
        case MSG_CTL_MIDSK:
        case MSG_APP_WEB:
        case MSG_CTL_OK:
        case MSG_APP_OK:

        break;

        case MSG_TIMER:

        break; 

        case MSG_APP_CANCEL:
        case MSG_CTL_CANCEL:
        
            MMK_CloseWin(win_id);
        break;

        default:
            recode = MMI_RESULT_FALSE;
        break;
    }

    return recode;
}



整个移植过程不算太麻烦 主要是其他人把核心的东西都整好了 我只是拿来用就可以了......

这里就不贴源码了 需要的同学可以留言留下邮箱我把整个文件打包发给大家


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值