|
如附件显示的那样,从选择菜单按钮按键进入监视菜单,会有卡顿,用的是F429 ,有优化的控件与处理方式吗?求指导。
bbb68f16485ef3018dffa7dce3fc2827.mp4
(3.5 MB, 下载次数: 11)
/*资源表如下*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{
{WINDOW_CreateIndirect, "Window", ID_WINDOW_SUB_SETTINGS_MENU, 0, 0, 800, 480, 0, 0x0, 0 },
{IMAGE_CreateIndirect, "Image_param_box", ID_IMAGE_SUB_SETTINGS_MENU_PARAM_BOX, 530, 10, 250, 250, 0, 0, 0 },
{IMAGE_CreateIndirect, "Image_menu_title_1", ID_IMAGE_SUB_SETTINGS_MENU_TITLE_1, 10, 10, 250, 41, 0, 0, 0 },
{IMAGE_CreateIndirect, "Image_menu_title_2", ID_IMAGE_SUB_SETTINGS_MENU_TITLE_2, 270, 10, 250, 41, 0, 0, 0 },
{LISTBOX_CreateIndirect, "Listbox1", ID_LISTBOX_SUB_SETTINGS_MENU_1, 10 - 1, 51, 250 + 2, 432, 0, 0x0, 0 },
{LISTBOX_CreateIndirect, "Listbox2", ID_LISTBOX_SUB_SETTINGS_MENU_2, 270 - 1, 51, 250 + 2, 432, 0, 0x0, 0 },
{TEXT_CreateIndirect, "text_menu_1_title", ID_TEXT_SUB_SETTINGS_MENU_TITLE_1, 10, 10, 250, 41, 0, 0x0, 0 },
{TEXT_CreateIndirect, "text_menu_2_title", ID_TEXT_SUB_SETTINGS_MENU_TITLE_2, 270, 10, 250, 41, 0, 0x0, 0 },
{TEXT_CreateIndirect, "text_menu_3_title", ID_TEXT_SUB_SETTINGS_MENU_TITLE_3, 530, 10, 250, 41, 0, 0x0, 0 },
//RW-Value
{TEXT_CreateIndirect, "Text_Tag_RW_Value", ID_TEXT_SUB_SETTINGS_MENU_TAG_RW_VALUE, 550, 60, 218, 30, 0, 0x64, 0},
{EDIT_CreateIndirect, "Edit_RW_Value", ID_EDIT_SUB_SETTINGS_MENU_RW_VALUE, 555, 131, 197, 41, 0, 0, 0 },
{TEXT_CreateIndirect, "Text_RW_Value_Min", ID_TEXT_SUB_SETTINGS_MENU_RW_VALUE_MIN, 555, 93, 55, 20, 0, 0x64, 0 },
{TEXT_CreateIndirect, "Text_RW_Value_Max", ID_TEXT_SUB_SETTINGS_MENU_RW_VALUE_MAX, 630, 93, 78, 20, 0, 0x64, 0 },
{TEXT_CreateIndirect, "Text_RW_Value_Unit", ID_TEXT_SUB_SETTINGS_MENU_RW_VALUE_UNIT, 715, 86, 58, 28, 0, 0x64, 0 },
//RO-Value
{TEXT_CreateIndirect, "Text_RO_Value", ID_TEXT_SUB_SETTINGS_MENU_RO_VALUE, 529, 117, 249, 41, 0, 0x64, 0 },
//Bool
{RADIO_CreateIndirect, "Radio_Bool", ID_RADIO_SUB_SETTINGS_MENU_BOOL, 540, 82, 138, 80, 0, 0x1e02, 2 },
//Enum
{DROPDOWN_CreateIndirect,"Dropdown_Enum", ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM, 550, 72, 206, 29, 0, 0x0, 0 },
//Listview
{LISTVIEW_CreateIndirect,"Listview", ID_LISTVIEW_SUB_SETTINGS_MENU, 274, 10, 516, 470, 0, 0x0, 0 },
};
回调函数如下:
static void _cbDialog(WM_MESSAGE * pMsg)
{
emwin_icon_t *pemwin_icon = &emwin_icon;
sub_settings_menu_info_t *psub_settings_menu_info = &sub_settings_menu_info;
WM_HWIN hItem;
int NCode;
int Id;
int data;
uint16_t language = get_parameter_value(METER_PARAMETER_ADDRESS_LANGUAGE);
emwin_feed_iwdg();
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
{
hItem = pMsg->hWin;
GUI_SelectLayer(1);
WINDOW_SetBkColor(hItem, GUI_BLACK);
GUI_Clear();
// Initialization of 'Image_msg_box'
hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_SUB_SETTINGS_MENU_PARAM_BOX);
IMAGE_SetDTA(hItem, pemwin_icon->settings_menu_parameter_box.buffer, pemwin_icon->settings_menu_parameter_box.size);
// Initialization of 'Image_menu_title_1'
hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_SUB_SETTINGS_MENU_TITLE_1);
IMAGE_SetDTA(hItem, pemwin_icon->settings_menu_title.buffer, pemwin_icon->settings_menu_title.size);
// Initialization of 'Image_menu_title_2'
hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_SUB_SETTINGS_MENU_TITLE_2);
IMAGE_SetDTA(hItem, pemwin_icon->settings_menu_title.buffer, pemwin_icon->settings_menu_title.size);
//Listbox1
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_SUB_SETTINGS_MENU_1);
LISTBOX_SetBkColor(hItem, LISTBOX_CI_UNSEL ,SETTING_MENU_BACK_COLOR);
LISTBOX_SetTextColor(hItem, LISTBOX_CI_UNSEL ,GUI_WHITE);
LISTBOX_SetBkColor(hItem, LISTBOX_CI_SELFOCUS ,LIST_BOX_SELECT_BACK_COLOR);
LISTBOX_SetTextColor(hItem, LISTBOX_CI_SELFOCUS ,GUI_WHITE);
LISTBOX_SetTextAlign(hItem, GUI_TA_LEFT|GUI_TA_VCENTER);
LISTBOX_SetItemSpacing(hItem, 9);
LISTBOX_EnableWrapMode(hItem, 1);
LISTBOX_SetFont(hItem, &font_sif_lib_28);
//Listbox2
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_SUB_SETTINGS_MENU_2);
LISTBOX_SetBkColor(hItem, LISTBOX_CI_UNSEL ,SETTING_MENU_BACK_COLOR);
LISTBOX_SetTextColor(hItem, LISTBOX_CI_UNSEL ,GUI_WHITE);
LISTBOX_SetBkColor(hItem, LISTBOX_CI_SELFOCUS ,LIST_BOX_SELECT_BACK_COLOR);
LISTBOX_SetTextColor(hItem, LISTBOX_CI_SELFOCUS ,GUI_WHITE);
LISTBOX_SetTextAlign(hItem, GUI_TA_LEFT|GUI_TA_VCENTER);
LISTBOX_SetItemSpacing(hItem, 9);
LISTBOX_EnableWrapMode(hItem, 1);
LISTBOX_SetFont(hItem, &font_sif_lib_28);
// Initialization of 'Text_Tag_RW'
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_TAG_RW_VALUE);
TEXT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
TEXT_SetFont(hItem, &font_sif_lib_28);
TEXT_SetTextColor(hItem, GUI_GRAY);
TEXT_SetText(hItem, sttings_menu_rw_tag[language]);
// Initialization of 'EDIT_RW_Value'
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_SUB_SETTINGS_MENU_RW_VALUE);
EDIT_SetText(hItem, "0");
EDIT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
EDIT_SetFont(hItem, GUI_FONT_32_1);
// EDIT_EnableBlink(hItem, 300, 1);
// Initialization of 'Min'
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_RW_VALUE_MIN);
TEXT_SetText(hItem, "0");
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetFont(hItem, GUI_FONT_20_1);
TEXT_SetTextColor(hItem, GUI_GRAY);
// Initialization of 'Max'
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_RW_VALUE_MAX);
TEXT_SetFont(hItem, GUI_FONT_20_1);
TEXT_SetText(hItem, "100");
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetTextColor(hItem, GUI_GRAY);
// Initialization of 'Unit'
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_RW_VALUE_UNIT);
TEXT_SetFont(hItem, &font_sif_lib_28);//GUI_FONT_20_1);
TEXT_SetText(hItem, "%");
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetTextColor(hItem, GUI_GRAY);
// Initialization of 'menu_title_1'
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_TITLE_1);
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetFont(hItem, &font_sif_lib_28);
TEXT_SetTextColor(hItem, GUI_WHITE);
// Initialization of 'menu_title_2'
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_TITLE_2);
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetFont(hItem, &font_sif_lib_28);
TEXT_SetTextColor(hItem, GUI_WHITE);
// Initialization of 'menu_title_3'
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_TITLE_3);
TEXT_SetFont(hItem, &font_sif_lib_28);
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetTextColor(hItem, GUI_WHITE);
//Initialization of "TEXT_RO_Value"
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUB_SETTINGS_MENU_RO_VALUE);
TEXT_SetTextColor(hItem, GUI_GRAY);
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetFont(hItem, GUI_FONT_24_1);
// Initialization of 'Dropdown_Enum'
hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM);
DROPDOWN_SetListHeight(hItem, 150);
DROPDOWN_SetFont(hItem, &font_sif_lib_28);
DROPDOWN_SetAutoScroll(hItem, 1);
DROPDOWN_SetBkColor(hItem, DROPDOWN_CI_UNSEL ,GUI_MAKE_COLOR(0x00623700));//0x00804000));
DROPDOWN_SetBkColor(hItem, DROPDOWN_CI_SELFOCUS ,LIST_BOX_SELECT_BACK_COLOR);
DROPDOWN_SetColor(hItem, DROPDOWN_CI_UNSEL ,GUI_WHITE);
DROPDOWN_SetColor(hItem, DROPDOWN_CI_SEL ,GUI_WHITE);
DROPDOWN_SetColor(hItem, DROPDOWN_CI_SELFOCUS ,GUI_WHITE);
// Initialization of 'Radio_Bool'
hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO_SUB_SETTINGS_MENU_BOOL);
RADIO_SetTextColor(hItem, GUI_WHITE);
RADIO_SetFocusColor(hItem, LIST_BOX_SELECT_BACK_COLOR);
RADIO_SetFont(hItem, &font_sif_lib_28);
// Initialization of 'Listview'
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_SUB_SETTINGS_MENU);
HEADER_SetFont(LISTVIEW_GetHeader(hItem), &font_sif_lib_28);
LISTVIEW_SetHeaderHeight(hItem, 32);
LISTVIEW_SetRowHeight(hItem, 32);
LISTVIEW_SetFont(hItem, &font_sif_lib_28);
LISTVIEW_SetGridVis(hItem, 1);
LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, SETTING_MENU_BACK_COLOR);
LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_UNSEL, GUI_GRAY);
LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SEL, SETTING_MENU_BACK_COLOR);
LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_SEL, GUI_GRAY);
LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SELFOCUS, LIST_BOX_SELECT_BACK_COLOR);
LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_SELFOCUS, GUI_WHITE);
hide_all_widget(pMsg);
init_listbox_data(pMsg);
break;
}
// case WM_PAINT:
// {
// GUI_SetBkColor(GUI_MAKE_COLOR(0x00000000));
// GUI_Clear();
// break;
// }
case WM_NOTIFY_PARENT:
{
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id)
{
case ID_LISTBOX_SUB_SETTINGS_MENU_1:
{
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_SEL_CHANGED:
update_listbox_1_data(pMsg);
break;
case WM_NOTIFICATION_GOT_FOCUS:
break;
case WM_NOTIFICATION_LOST_FOCUS:
break;
}
break;
}
case ID_LISTBOX_SUB_SETTINGS_MENU_2:
{
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_SEL_CHANGED:
update_listbox_2_data(pMsg);
break;
case WM_NOTIFICATION_GOT_FOCUS:
break;
case WM_NOTIFICATION_LOST_FOCUS:
break;
}
break;
}
case ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM://Enum
{
hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM);
switch(NCode)
{
case WM_NOTIFICATION_SEL_CHANGED:
{
DROPDOWN_SetSelExp(hItem, DROPDOWN_GetSel(hItem));
break;
}
case WM_NOTIFICATION_GOT_FOCUS:
{
DROPDOWN_Expand(hItem);
psub_settings_menu_info->focus_id = ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM;
break;
}
case WM_NOTIFICATION_LOST_FOCUS:
{
// if(psub_settings_menu_info->focus_id == ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM) // TBD ?
// {
// DROPDOWN_Collapse(hItem);
// }
psub_settings_menu_info->focus_id = 0;
break;
}
}
break;
}
case ID_RADIO_SUB_SETTINGS_MENU_BOOL://Bool
{
hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO_SUB_SETTINGS_MENU_BOOL);
switch(NCode)
{
case WM_NOTIFICATION_SEL_CHANGED:
break;
case WM_NOTIFICATION_GOT_FOCUS:
psub_settings_menu_info->focus_id = ID_RADIO_SUB_SETTINGS_MENU_BOOL;
break;
case WM_NOTIFICATION_LOST_FOCUS:
psub_settings_menu_info->focus_id = 0;
break;
}
break;
}
case ID_EDIT_SUB_SETTINGS_MENU_RW_VALUE://RW
{
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_SUB_SETTINGS_MENU_RW_VALUE);
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_SEL_CHANGED:
break;
case WM_NOTIFICATION_GOT_FOCUS:
psub_settings_menu_info->focus_id = ID_EDIT_SUB_SETTINGS_MENU_RW_VALUE;
break;
case WM_NOTIFICATION_LOST_FOCUS:
psub_settings_menu_info->focus_id = 0;
break;
}
break;
}
case ID_LISTVIEW_SUB_SETTINGS_MENU://Listview
{
hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_SUB_SETTINGS_MENU);
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_SEL_CHANGED:
break;
case WM_NOTIFICATION_GOT_FOCUS:
break;
case WM_NOTIFICATION_LOST_FOCUS:
break;
}
break;
}
}
break;
}
case WM_TIMER:
{
timer_update_data(pMsg);
WM_RestartTimer(pMsg->Data.v, 500);
break;
}
case WM_DELETE:
{
create_main_settings_menu();
break;
}
case WM_KEY:
{
data = pMsg->Data.v;
switch(data)
{
case GUI_KEY_UP:
{
break;
}
case GUI_KEY_DOWN:
{
break;
}
case GUI_KEY_BACKTAB:
{
if(psub_settings_menu_info->focus_id == ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM) // TBD ?
{
DROPDOWN_Collapse(hItem);
}
psub_settings_menu_info->focus_id = 0;
break;
}
case GUI_KEY_TAB:
{
if(psub_settings_menu_info->focus_id == ID_DROPDOWN_SUB_SETTINGS_MENU_ENUM) // TBD ?
{
DROPDOWN_Collapse(hItem);
}
psub_settings_menu_info->focus_id = 0;
break;
}
case GUI_KEY_ESCAPE:
{
process_escape_msg(pMsg);
break;
}
case GUI_KEY_ENTER:
{
process_enter_msg(pMsg);
break;
}
default:
break;
}
break;
}
default:
WM_DefaultProc(pMsg);
break;
}
}
}
|
|