|

楼主 |
发表于 2020-10-13 17:28:25
|
显示全部楼层
硬汉哥,这是一个简单的测试代码哈,一个dropdown无效果,另一个dropdown要先显示默认的白色背景后才显示我设置的样式,代码如下:
/*********************************************************************
* *
* SEGGER Microcontroller GmbH & Co. KG *
* Solutions for real time microcontroller applications *
* *
**********************************************************************
* *
* C-file generated by: *
* *
* GUI_Builder for emWin version 5.30 *
* Compiled Jul 1 2015, 10:50:32 *
* (c) 2015 Segger Microcontroller GmbH & Co. KG *
* *
**********************************************************************
* *
* Internet: www.segger.com Support: support@segger.com *
* *
**********************************************************************
*/
// USER START (Optionally insert additional includes)
// USER END
#include "DIALOG.h"
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
#define ID_WINDOW_0 (GUI_ID_USER + 0x03)
#define ID_DROPDOWN_0 (GUI_ID_USER + 0x04)
#define ID_DROPDOWN_1 (GUI_ID_USER + 0x05)
// USER START (Optionally insert additional defines)
// USER END
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
// USER START (Optionally insert additional static data)
static int SetDropDownStyle(WM_HWIN * hItem);
// USER END
/*********************************************************************
*
* _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 3, 2, 320, 240, 0, 0x0, 0 },
{ DROPDOWN_CreateIndirect, "Dropdown", ID_DROPDOWN_0, 41, 41, 80, 18, 0, 0x0, 0 },
{ DROPDOWN_CreateIndirect, "Dropdown", ID_DROPDOWN_1, 189, 41, 80, 18, 0, 0x0, 0 },
// USER START (Optionally insert additional widgets)
// USER END
};
/*********************************************************************
*
* Static code
*
**********************************************************************
*/
// USER START (Optionally insert additional static code)
// USER END
/*********************************************************************
*
* _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
int NCode;
int Id;
LISTBOX_Handle listbox;
int i;
// USER START (Optionally insert additional variables)
// USER END
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of 'Window'
//
hItem = pMsg->hWin;
WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(0x00C080FF));
//
// Initialization of 'Dropdown'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0);
DROPDOWN_SetListHeight(hItem, 50);
DROPDOWN_AddString(hItem, "1");
DROPDOWN_AddString(hItem, "2");
DROPDOWN_AddString(hItem, "3");
SetDropDownStyle(&hItem);
//
// Initialization of 'Dropdown'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_1);
DROPDOWN_SetListHeight(hItem, 50);
DROPDOWN_AddString(hItem, "1");
DROPDOWN_AddString(hItem, "2");
DROPDOWN_AddString(hItem, "3");
DROPDOWN_SetFont(hItem, GUI_FONT_13_1);
DROPDOWN_AddString(hItem, "Item");
// USER START (Optionally insert additional code for further widget initialization)
// USER END
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_DROPDOWN_0: // Notifications sent by 'Dropdown'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_SEL_CHANGED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_DROPDOWN_1: // Notifications sent by 'Dropdown'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
listbox = DROPDOWN_GetListbox(WM_GetDialogItem(pMsg->hWin,Id));//当dropdown展开才能获取句柄
LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);
// USER END
break;
case WM_NOTIFICATION_SEL_CHANGED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
// USER START (Optionally insert additional code for further Ids)
// USER END
}
break;
// USER START (Optionally insert additional message handling)
// USER END
default:
WM_DefaultProc(pMsg);
break;
}
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* CreateWindow
*/
WM_HWIN CreateWindow1(void);
WM_HWIN CreateWindow1(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}
// USER START (Optionally insert additional public code)
void MainTask(void)
{
/* 初始化 */
GUI_Init();
/* 窗口自动使用存储设备 */
WM_SetCreateFlags(WM_CF_MEMDEV);
/* 创建对话框,使用GUIBulder生成的对话框创建函数 */
CreateWindow1();
while (1)
{
GUI_Delay(10);
}
}
static int SetDropDownStyle(WM_HWIN * hItem)
{
DROPDOWN_SKINFLEX_PROPS skin;
LISTBOX_Handle listbox;
int i;
DROPDOWN_SetTextAlign(*hItem, GUI_TA_VCENTER);
DROPDOWN_SetFont(*hItem, GUI_FONT_24_1);
DROPDOWN_SetAutoScroll(*hItem, 1); //开启下拉滑动条
for (i = 0; i < DROPDOWN_SKINFLEX_PI_DISABLED + 1; i++)
{
DROPDOWN_GetSkinFlexProps(&skin, i);
skin.aColorFrame[0] = 0X393A3E;
skin.aColorFrame[1] = 0X393A3E;
skin.aColorFrame[2] = 0X393A3E;
skin.aColorUpper[0] = 0X393A3E;
skin.aColorUpper[1] = 0X393A3E;
skin.aColorLower[0] = 0X393A3E;
skin.aColorLower[1] = 0X393A3E;
skin.ColorArrow = 0xDDDDDC;
skin.ColorText = GUI_WHITE;
skin.Radius = 2;
skin.ColorSep = GUI_BLACK;
DROPDOWN_SetSkinFlexProps(&skin, i);
}
DROPDOWN_SetTextHeight(*hItem, 30); // 设置dropdown 关闭状态时的高度
DROPDOWN_SetListHeight(*hItem, 250);//设置下拉列表的高度
DROPDOWN_SetScrollbarWidth(*hItem, 32);//滚动条的宽度
DROPDOWN_Expand(*hItem); //展开listbox
listbox = DROPDOWN_GetListbox(*hItem);//当dropdown展开才能获取句柄
LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);
DROPDOWN_Collapse(*hItem);//关闭listbox
return 0;
}
// USER END
/*************************** End of file ****************************/
|
|