STM32 - Control DESPLEGABLE EMWIN (17)

EMWI

prefacio

El widget DROPDOWN se usa para seleccionar un elemento de una lista con varias columnas. Muestra el elemento actualmente seleccionado en un estado no abierto. Si el usuario abre el widget DROPDOWN, aparece un CUADRO DE LISTA para seleccionar un nuevo elemento.

1. Introducción al control DROPDOWN

Los controles DROPDOWN se muestran en las Figuras 16.1.1 y 16.1.2 respectivamente cuando están abiertos y cerrados
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

2. Código de notificación

La siguiente tabla enumera los tipos de mensajes que el widget DROPDOWN envía a su ventana principal como parte del mensaje WM_NOTIFY_PARENT:

WM_NOTIFICATION_CLICKED 已单击小工具。
WM_NOTIFICATION_RELEASED 已释放小工具。
WM_NOTIFICATION_MOVED_OUT
已单击小工具,并且指针已移出小工具,但没有释放。
WM_NOTIFICATION_SCROLL_CHANGED
已打开的下拉列表小工具的可选滚动条的滚动位置已改变。
WM_NOTIFICATION_SEL_CHANGED 下拉列表的选择已更改。

3. Respuesta del teclado

Si el control DROPDWON tiene foco de entrada, reaccionará a las siguientes teclas:

GUI_KEY_ENTER 从打开的下拉列表中选择项目,然后关闭列表。
GUI_KEY_SPACE 打开下拉列表

4. Función API de control DESPLEGABLE

DROPDOWN_AddString() 给 DROPDOWN 列表添加元素。
DROPDOWN_Collapse() 关闭下拉列表。
DROPDOWN_Create() 创建 DROPDOWN 小工具。
DROPDOWN_CreateEx() 创建 DROPDOWN 小工具。
DROPDOWN_CreateIndirect() 从资源表项创建 DROPDOWN 小工具。
DROPDOWN_CreateUser() 使用额外字节作为用户数据创建 DROPDOWN 小工具。
DROPDOWN_DecSel() 减小选定范围。
DROPDOWN_DecSelExp() 递减处于展开状态的选取项。
DROPROWN_DeleteItem() 删除 DROPDOWN 列表的项目。
DROPDOWN_Expand() 打开下拉列表。
DROPDOWN_GetDefaultFont() 返回用于创建 DROPDOWN 小工具的默认字体。
DROPDOWN_GetItemDisabled() 返回给定项目的状态。
DROPDOWN_GetListbox() 返回处于展开状态的附加 DROPDOWN 的句柄
DROPDOWN_GetNumItems() 返回下拉列表中项目的数量。
DROPDOWN_GetSel() 返回当前选定元素的数量。
DROPDOWN_GetSelExp() 返回处于展开状态的当前选定元素的数量。
DROPDOWN_GetUserData() 检索使用 DROPDOWN_SetUserData()设置的数据
DROPDOWN_IncSel() 增加选定范围。
DROPDOWN_IncSelExp() 递增处于展开状态的选取项。
DROPDOWN_SetAutoScroll() 启用在下拉列表中自动使用滚动条。
DROPDOWN_SetBkColor() 设置背景颜色。
DROPDOWN_SetColor() 设置 DROPDWON 小工具的箭头和按钮的颜色。
DROPDOWN_SetDefaultColor() 设置 DROPDWON 小工具的箭头和按钮的默认颜色。
DROPDOWN_SetDefaultFont() 设置 DROPDWON 小工具的默认字体。
DROPDOWN_SetDefaultScrollbarColor() 设置下拉列表中可选滚动条的默认颜色。
DROPDOWN_SetFont() 设置给定 DROPDWON 小工具的字体。
DROPDOWN_SetItemDisabled() 设置给定项目的状态。
DROPDOWN_SetItemSpacing() 设置下拉列表中各项目之间的间距。
DROPDOWN_SetScrollbarColor() 设置下拉列表中滚动条的颜色。
DROPDOWN_SetSel() 设置当前选定内容。
DROPDOWN_SetSelExp() 设置处于展开状态的当前选择。
DROPDOWN_SetTextAlign() 设置用于显示关闭状态下拉文本的对齐方式。
DROPDOWN_SetTextColor() 设置给定 DROPDWON 小工具的文本颜色。
DROPDOWN_SetTextHeight() 设置用于显示关闭状态下拉文本的矩形的高度。
DROPDOWN_SetUserData() 设置 DROPDWON 小工具的额外数据。

Cinco, rutina de demostración de control DROPDOWN

#include "dropdowndemo.h"
#include "DIALOG.h"
#define ID_FRAMEWIN_0 (GUI_ID_USER + 0x02)
#define ID_DROPDOWN_0 (GUI_ID_USER + 0x04)
//对话框资源表
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = 
{
    
    
{
    
     FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 320, 240, 
FRAMEWIN_CF_MOVEABLE, 0x64, 0 },
{
    
     DROPDOWN_CreateIndirect, "Dropdown", ID_DROPDOWN_0, 88, 24, 109, 60, 0, 0x0, 0 },
};
//对话框回调函数
static void _cbDialog(WM_MESSAGE * pMsg) 
{
    
    
WM_HWIN hItem;
int NCode;
int Id;
switch (pMsg->MsgId) 
{
    
    
case WM_INIT_DIALOG:
hItem = pMsg->hWin;
//初始化 FRAMEWIN
FRAMEWIN_SetText(hItem, "DROPDOWN ");
FRAMEWIN_SetFont(hItem, GUI_FONT_16_ASCII);
FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
//初始化 DROPDOWN
hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0);
DROPDOWN_SetFont(hItem, GUI_FONT_13H_ASCII); (1)
DROPDOWN_SetAutoScroll(hItem,1);//启用自动使用滚动条 (2)
DROPDOWN_AddString(hItem, "China"); (3)
DROPDOWN_AddString(hItem, "Cambodia");
DROPDOWN_AddString(hItem, "Japan");
DROPDOWN_AddString(hItem, "Australien");
DROPDOWN_AddString(hItem, "Canada");
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) 
{
    
    
case ID_DROPDOWN_0: //DROPDOWN 通知代码
switch(NCode) 
{
    
    
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_SEL_CHANGED:
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
break;
} 
}
//创建对话框
void dropdown_demo(void) 
{
    
    
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, 
WM_HBKWIN, 0, 0);
while(1)
{
    
    
GUI_Delay(100);
} 
}

(1), establezca la fuente del control DROPDOWN.
(2), habilite el control DROPDOWN para usar automáticamente la función de barra de desplazamiento, de modo que cuando haya demasiados elementos en el control, aparecerá una barra de desplazamiento.
(3), agregue un nuevo elemento al control DROPDOWN. Esta rutina es relativamente simple. Segger proporciona oficialmente una rutina DROPDOWN: WIDGET_Dropdown.c. Puede usar el simulador para simular y ejecutar esta rutina. Esta rutina muestra el uso de las funciones API DROPDOWN en detalle.
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_51963216/article/details/124069288
Recomendado
Clasificación