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

来源:互联网 发布:算法竞赛入门经典txt 编辑:程序博客网 时间:2024/04/28 17:43

其中 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;}



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

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