📄 updateui.c
字号:
{
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 + -