第43章
EDIT-编辑控件
本期教程讲解STemWin支持的编辑控件。
43.1编辑控件介绍
43. 2 官方WIDGET_Edit实例
43. 3 对话框上使用编辑框控件
43. 4 总结
43.1
编辑控件介绍
编辑字段通常用作输入文本的主要用户界面:
也可使用编辑字段以二进制、十进制或十六进制模式输入值。十进制模式编辑字段的外观与下表所列
类似。与复选框类似,编辑字段在禁用时显示为灰色:
开启皮肤设置后,编辑框的显示效果如下:
43.1.1编辑框支持的通知代码
以下事件是编辑框控件作为WM_NOTIFY_PARENT消息的一部分发送给其父窗口的:
消息
描述
WM_NOTIFICATION_CLICKED
已被点击。
WM_NOTIFICATION_RELEASED
已被释放。
WM_NOTIFICATION_MOVED_OUT
已被点击,且指针已移出控件,但没有释放。
WM_NOTIFICATION_VALUE_CHANGED
编辑小工具的值 (内容)已更改。
43.1.2编辑框支持的键盘反应
如果控件具有输入焦点,则它将对下列各键做出反应:
按键
反应
GUI_KEY_UP
上升当前字符。例如,如果当前字符 (光标下的字符)为 “A”, 则 变 为 “B”。
GUI_KEY_DOWN
下降当前字符。例如,如果当前字符为为 “B”,则变为 “A”。
GUI_KEY_RIGHT
将光标向右移动一个字符。
GUI_KEY_LEFT
将光标向左移动一个字符。
GUI_KEY_BACKSPACE
如果小工具在文本模式下操作,则删除光标前的字符。
GUI_KEY_DELETE
如果小工具在文本模式下操作,则删除当前字符。
GUI_KEY_INSERT
如果小工具在文本模式下操作,则此键在GUI_EDIT_MODE_OVERWRITE
和GUI_EDIT_MODE_INSERT之间切换编辑模式。
43.2
官方WIDGET_Edit实例
官方的这个例子演示了部分EDIT控件API的使用。这个例子在模拟器中的位置:
源代码如下(官方的这个例子有BUG,下面是修改前的,也就是源代码):
#include "GUI.h"
#include "EDIT.h"
#define WM_APP_SHOW_TEXT (WM_USER + 0)(1)
#define TEXT_MAXLEN 40(2)
static void _cbBk(WM_MESSAGE * pMsg) {
static WM_HWIN hEdit;
static U8 ShowText;
char aBuffer[TEXT_MAXLEN];
hEdit = 0;
ShowText = 0;
switch (pMsg->MsgId) {
case WM_PAINT:
GUI_SetBkColor(GUI_DARKGRAY);
GUI_Clear();
GUI_SetFont(&GUI_Font24_ASCII);
GUI_DispStringHCenterAt("WIDGET_Edit - Sample", 160, 5);
GUI_SetFont(&GUI_Font8x16);
if (ShowText) {
GUI_DispStringHCenterAt("The string you have modified is:", 160, 90);
EDIT_GetText(hEdit, aBuffer, TEXT_MAXLEN);
GUI_DispStringHCenterAt(aBuffer, 160, 110);
} else {
GUI_DispStringHCenterAt("Use