EMWIN
文章目录
- EMWIN
- 前言
- 一、 DROPDOWN 控件简介
- 二、通知代码
- 三、键盘反应
- 四、DROPDOWN 控件 API 函数
- 五、DROPDOWN 控件演示例程
前言
DROPDOWN 小工具用于从具有若干栏的列表中选择一个元素,它以非打开状态显示当前选择的项目,如果用户打开 DROPDOWN 小工具,就会出现一个选择新项目的 LISTBOX
一、 DROPDOWN 控件简介
DROPDOWN 控件在打开和关闭情况下分别如图 16.1.1 和 16.1.2 所示
二、通知代码
下表列举出了 DROPDOWN 小工具作为 WM_NOTIFY_PARENT 消息的一部分发送给其父窗口的消息类型:
WM_NOTIFICATION_CLICKED 已单击小工具。
WM_NOTIFICATION_RELEASED 已释放小工具。
WM_NOTIFICATION_MOVED_OUT
已单击小工具,并且指针已移出小工具,但没有释放。
WM_NOTIFICATION_SCROLL_CHANGED
已打开的下拉列表小工具的可选滚动条的滚动位置已改变。
WM_NOTIFICATION_SEL_CHANGED 下拉列表的选择已更改。
三、键盘反应
如果 DROPDWON 控件具有输入焦点,则它将对下列的各键做出反应:
GUI_KEY_ENTER 从打开的下拉列表中选择项目,然后关闭列表。
GUI_KEY_SPACE 打开下拉列表
四、DROPDOWN 控件 API 函数
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 小工具的额外数据。
五、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)、设置 DROPDOWN 控件的字体。
(2)、启用 DROPDOWN 控件自动使用滚动条的功能,这样当控件中条目过多的时候就会有滚动条出现。
(3)、向 DROPDOWN 控件中添加新元素。本例程比较简单,Segger 官方提供了一个 DROPDOWN 的例程:WIDGET_Dropdown.c,大家可以使用模拟器仿真运行一个这个例程,这个例程中详细的展示了 DROPDOWN 的 API函数的使用。