emWin功能的具体实现(在MainTask.c文件里面):
#include "MainTask.h"
#include "bsp.h"
/*
*********************************************************************************************************
* 宏定义
*********************************************************************************************************
*/
#define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
/*
*********************************************************************************************************
* GUI_WIDGET_CREATE_INFO类型数组
*********************************************************************************************************
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{
{ FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 800, 480, 0, 0x64, 0 },
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 34, 35, 177, 52, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 34, 150, 177, 52, 0, 0x0, 0 },
};
/*
*********************************************************************************************************
* 函 数 名: _DrawSkin_BUTTON
* 功能说明: 按钮皮肤回调函数
* 形 参: pDrawItemInfo 回调参数
* 返 回 值: 无
*********************************************************************************************************
*/
static int _DrawSkin_BUTTON(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo)
{
switch (pDrawItemInfo->Cmd)
{
/* 绘制按钮背景命令 */
case WIDGET_ITEM_DRAW_BACKGROUND:
/* 实现扁平化效果*/
GUI_SetColor(0xA8A851);
/* 如果按钮按下,或者填充的圆角矩形,如果未按下,绘制圆角边框 */
if (BUTTON_IsPressed(pDrawItemInfo->hWin))
{
GUI_AA_FillRoundedRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1,
pDrawItemInfo->y1, 6);
}
else
{
GUI_AA_DrawRoundedRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1,
pDrawItemInfo->y1, 6);
}
break;
default:
/* 除了绘制背景命令,其它所有命令依然使用默认的按钮皮肤回调函数 */
return BUTTON_DrawSkinFlex(pDrawItemInfo);
}
/* 防止警告 */
return 0;
}
|