|
发表于 2018-4-16 20:20:51
|
显示全部楼层
本帖最后由 roguebear 于 2018-4-16 20:21 编辑
/* https://arm-stm.blogspot.com/2017/08/emwin-skins-for-buttons.html
用户手册959页 22.5 对“FLEX”皮肤外观的简单修改
*/
int ID_CurMotor;
static int _DrawSkinFlex_BUTTON(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo) {
int Id;
GUI_COLOR Color = GUI_CYAN ;
switch (pDrawItemInfo->Cmd) {
case WIDGET_ITEM_DRAW_BACKGROUND:
Id = WM_GetId(pDrawItemInfo->hWin);
switch (Id) {
case ID_BUTTON_1:
case ID_BUTTON_2:
case ID_BUTTON_3:
case ID_BUTTON_4:
case ID_BUTTON_5:
case ID_BUTTON_6:
case ID_BUTTON_7:
case ID_BUTTON_8:
case ID_BUTTON_9:
case ID_BUTTON_10:
case ID_BUTTON_11:
case ID_BUTTON_12:
if( ID_CurMotor == Id && ( ! BUTTON_IsPressed(pDrawItemInfo->hWin) ) )
{
GUI_SetColor( Color ); //Color = GUI_CYAN;
GUI_AA_FillRoundedRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1, 6);
}
else
{
BUTTON_DrawSkinFlex(pDrawItemInfo);
}
break;
}
return 0;
default:
return BUTTON_DrawSkinFlex(pDrawItemInfo);
}
}
static void _InvalidButton(int Id, WM_MESSAGE * pMsg)
{
ID_CurMotor = Id;
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_4) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_5) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_6) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_7) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_8) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_9) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_10) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_11) , _DrawSkinFlex_BUTTON );
BUTTON_SetSkin( WM_GetDialogItem(pMsg->hWin, ID_BUTTON_12) , _DrawSkinFlex_BUTTON );
}
case ID_BUTTON_1: // Notifications sent by '1'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
//BUTTON_SetPressed( WM_GetDialogItem(pMsg->hWin, Id), 1 );
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
_InvalidButton( Id, pMsg );
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
|
|