⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 updateui.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 2 页
字号:
    {
        if (STATE == i)
            DrawStringIdEx(X, Y, 100, SID, Font16X16, &color, 0);
        else
            DrawStringIdEx(X, Y, 100, SID, Font16X16, NULL, 0);
        Y = Y + 20;
        SID++;
    }
}


INT32U  IUpdateWinPaint(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    if (!(WIN_NEEDPAIT(win)))
        return TRUE;
    if (!SetupFilePrint)
    {
        DrawBmpIdEx(win->x , win->y, win->BmpID, NULL, DSPM_Normal);
        DrawBmpIdEx(win->x , win->y + 30, BID_UpdatInf, NULL, DSPM_Transp4X8);
        DrawStringIdEx(win->x + 8, 50, 100, SID_DetectFireware, Font12X12, NULL, 0);   /*检测到新固件*/
        DrawStringIdEx(win->x + 8, 140, 100, SID_IFUpdate, Font12X12, NULL, 0);    /*是否升级*/
        DispVisionInf(110, 45);
    }
    WIN_CLEARPAIT(win);
    return 0;
}

INT32U  IUpdateWinKey(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    W_Update *WupdateObj = (W_Update*)(win->Data);
    WINDOW  *child = NULL;

    switch (wParam)
    {


        case KE_UP_RELEASE:
        case KE_DN_RELEASE:
        case KE_PREV_RELEASE:
        case KE_NEXT_RELEASE:
            if (WupdateObj->UpdatFouce)
            {
                WindowChildIDSendMessage(win, WID_ButtonOK, WM_SETFOCUS, 0, NULL);
                WindowChildIDSendMessage(win, WID_ButtonOKCancel, WM_KILLFOCUS, 0, NULL);
            }
            else
            {
                WindowChildIDSendMessage(win, WID_ButtonOKCancel, WM_SETFOCUS, 0, NULL);
                WindowChildIDSendMessage(win, WID_ButtonOK, WM_KILLFOCUS, 0, NULL);

            }
            WupdateObj->UpdatFouce = !WupdateObj->UpdatFouce;
            break;


        case KE_PLAY_RELEASE:
        case KE_MENU_RELEASE:

            if (WupdateObj->UpdatFouce)
            {
                WindowDestroy(win);
                return TRUE;
            }
            WupdateObj->UpdateState = Updstate_Begin;
#if  defined( BOARD )
            UpdateActionStart();   //重新启动
#endif
            //while(1);
            //关闭两个按钮子窗口
            child = WindowGetChildByID(win , WID_ButtonOK);
            WindowDestroy(child);
            child = WindowGetChildByID(win , WID_ButtonOKCancel);
            WindowDestroy(child);

            break;
        default:
            return WMPROC_UNHANDLE;
    }


    WindowInvalidateWindow(win);
    return 0;
}


INT32U  IUpdateWinCommand(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    INT16U  cwID = WM_CMD_GETCWID(wParam);
    INT16U  cwEvent = WM_CMD_GETEVENT(wParam);
    W_Update *WupdateObj = (W_Update*)(win->Data);
    WINDOW  *child = NULL;

    switch (cwID)
    {

        case WID_ButtonOK:
            {
                if (EV_ButtonPress == cwEvent)
                {
                    WupdateObj->UpdateState = Updstate_Begin;
                    #if 0
                    //关闭两个按钮子窗口
                    child = WindowGetChildByID(win , WID_ButtonOK);
                    WindowDestroy(child);
                    child = WindowGetChildByID(win , WID_ButtonOKCancel);
                    WindowDestroy(child);
                    #endif
                    FWUpdateWin(win);
                }
            }

            break;

        case WID_ButtonOKCancel:
            {
                if (EV_ButtonPress == cwEvent)
                {
                    WindowDestroy(win);
                }
            }

            break;

    }



    return 0;
}


INT32U  IUpdateWinChildClose(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    //错误,关闭窗口.
    if (wParam == WID_UpdateErrDialog)
    {
        WindowDestroy(win);
    }

    return 0;
}

UINT32 IUpdateWinTick(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{

#if 0
    W_Update *WupdateObj = (W_Update*)(win->Data);

    if ((WupdateObj->UpdateState >= Updstate_Max) || (WupdateObj->UpdateState <= Updstate_Check))
        return 0;

    WupdateObj->TICK++;
    if ((WupdateObj->TICK) % DelaySec)
    {
        WindowInvalidateWindow(win);
        return TRUE;
    }

    WupdateObj->UpdateState++;

#if  defined( BOARD )
    if (WupdateObj->UpdateState == Updstate_Max)
    {
#ifdef SETUP
        BL_SetBright(BL_DARK);   //080221,RGB 屏下不关背光会 花屏.
        UpdateActionStart();
#else
#ifndef SETUPDEDEBUG
        SetupMain(0);
        WindowSendMessage(FirmWareWin, WM_COMMAND, 0, (WLPARAM)"Restart!");
        LCD_Update_WT();
        DelayMs_nops(2000);
        ISystemReboot(0);
#endif
#endif
    }
#endif
    WindowInvalidateWindow(win);
#endif
    return TRUE;
}

UINT32 IUpdateWinCreat(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    W_Update *WupdateObj = NULL;

    WupdateObj = MallocClass(W_Update);

    if (WupdateObj)
    {
        WupdateObj->UpdateState = 0;
        WupdateObj->UpdatFouce = 0;
        WupdateObj->TICK = 0;
        win->Data = WupdateObj;
    }

    return TRUE;
}
INT32U  IUpdateWinDestroy(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    W_Update *WupdateObj = (W_Update*)(win->Data);


    if (WupdateObj)
        FREE(WupdateObj);

    //错误,关闭窗口.
    if (win->PrivateData)
    {
        UpdateCancle(win->PrivateData);
        win->PrivateData = NULL;
    }
    return WMPROC_UNHANDLE;
}

/*****************************************************************************/
/*********************************************************************************
Name        :   UpdateEntry
Desc        :   升级函数入口..
Param       :
                win : 父窗口指针。
                filePath:文件路径.
                Param:应用入口参数.

Return      :   0: 成功,否则失败. 返回非0 值会导致系统无法加载改进程.
Global      :   无.
Note        :

Author      :     HUANGSL
Log         :
*********************************************************************************/
INT32U UpdateEntry(void * win , char* filePath , void * Param)
{
    void        *pAction;
    WINDOW      *pWin;
    INT32U      err, r;

    CHILD_WINDOW   ChildButtonOKCancel[] =
    {
        {CW_TYPE_Button, WID_ButtonOK, 15, 170, 30, 20, (WS_TICK | WS_CHILDS | WS_ACTIVE | WS_BEFOCUS), SID_YES, BID_Updatbot },
        {CW_TYPE_Button, WID_ButtonOKCancel, 55, 170, 30, 20, (WS_TICK | WS_CHILDS | WS_ACTIVE), SID_NO, BID_Updatbot },
        CWIN_LASTITEM
    };

    pAction = UpdateGetFirstAction(&err);   //filePath ,
    if (pAction)
    {
        pWin = WindowCreate(win, WS_FULLSCREEN | WS_TICK,
                            WID_UpdateWin, 0, 0, LCD_W, LCD_H,
                            0, BID_Setup, NULL, ChildButtonOKCancel, WinUpdateProcMap , pAction);     //BID_ani0
        WindowInvalidateWindow(pWin);
    }
    return 0;

}
/*****************************************************************************/
/*对话框基本消息描述表*/
BEGIN_MESSAGE_MAP(WinUpdateProcMap)
    ON_MESSAGE(WM_PAINT ,       IUpdateWinPaint)
    ON_MESSAGE(WM_KEY,          IUpdateWinKey)
    ON_MESSAGE(WM_COMMAND,      IUpdateWinCommand)  //high 16 win id ,low 16 event.
    ON_MESSAGE(WM_CHILDCLOSED,  IUpdateWinChildClose)
    ON_MESSAGE(WM_DESTROY ,     IUpdateWinDestroy)
    ON_MESSAGE(WM_CREATE,   IUpdateWinCreat)
    ON_MESSAGE(WM_TICK,   IUpdateWinTick)
END_MESSAGE_MAP()


BEGIN_APPMESSAGE_MAP(FWDispWinMap , CW_TYPE_LISTBOX)    //4菜单子窗口msg map
ON_MESSAGE(WM_COMMAND, FWUpdateWinComm)
ON_MESSAGE(WM_PAINT, FWUpdateWinPaint)
#ifdef SETUPDEDEBUG
ON_MESSAGE(WM_TICK, FWUpdateWinTick)
#endif
END_MESSAGE_MAP()   //     NULL

/****************************************************************/
//---------END OF FILE---------//
/****************************************************************/



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -