|
发表于 2021-9-10 11:16:58
|
显示全部楼层
在界面的初始化部分设置按钮的回调函数
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
WM_SetCallback(hItem, _cbButton);
//按钮的回调函数
void _cbButton(WM_MESSAGE * pMsg)
{
WM_HWIN hWin;
GUI_RECT Rect;
hWin = pMsg->hWin;
const GUI_FONT *gui;
const GUI_FONT *btn;
char buff[16];
switch (pMsg->MsgId)
{
case WM_PAINT:
WM_GetClientRect(&Rect);
if(WM_GetFocusedWindow() == hWin)
{
GUI_DrawGradientV(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 0xFFBE9270,0xFF7D5639);
GUI_SetColor(GUI_WHITE);
}else{
GUI_DrawGradientV(Rect.x0, Rect.y0, Rect.x1, Rect.y1, GUI_GRAY_AA, GUI_GRAY_7C);
GUI_SetColor(GUI_BLACK);
}
BUTTON_GetText(hWin,buff,16);
GUI_SetTextMode(GUI_TEXTMODE_TRANS);
btn = BUTTON_GetFont(hWin);
gui = GUI_GetFont();
GUI_SetFont(btn);
GUI_DispStringInRect(buff, &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
GUI_SetFont(gui);
break;
default:
BUTTON_Callback(pMsg);
}
}
这个是emwin多个版本都可以用的,肯定可以自己绘制按钮。 |
|