第31章emWin(UCGUI)键盘输入(实体按键操作控件)

  • 格式:pdf
  • 大小:266.45 KB
  • 文档页数:7

// Get the handle of the edit widget
} break;
case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break;
STemWin 主任务:
#include "includes.h" #include "MainTask.h"
/*
********************************************************************************************************
case GUI_KEY_ENTER:
GUI_EndDialog(hDlg, 0);
break;
}
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
// Id of widget
NCode = pMsg->Data.v;
// Notification code
uint8_t ucKeyCode;
(void)p_arg;
/* 避免编译器报警 */
while (1) {
bsp_KeyScan();
ucKeyCode = bsp_GetKey();
if(ucKeyCode != KEY_NONE)
{
switch (ucKeyCode)
{
case KEY_DOWN_K1:
数据存储至输入缓冲器之中。该函数不可从中断服务程序调用。该函数的参数和上面函数的参数是一样的。
应用层的如下几个函数就先不做介绍了,使用到的时候再做介绍:
第2页 共7页
STM32-V5 开发板 STemWin 教程
31.3 实体按键操作
下面给大家讲解一下通过开发板上面带的按键来操作控件。按键的驱动请看安富莱 STM32-V5 开发板_
};
STM32-V5 开发板 STemWin 教程
/* ********************************************************************************************************* * 函 数 名: _cbDialog * 功能说明: 对话框的回调函数 * 形 参:pMsg 消息指针 * 返 回 值: 无 ********************************************************************************************************* */ static void _cbDialog(WM_MESSAGE * pMsg) {
优 先 级:2 ********************************************************************************************************* */ static void AppTaskUserIF(void *p_arg) {
程序
描述
GUI_StoreKeyMsg()
把消息存储于指定键
GUI_SendKeyMsg()
把消息发送至指定键。
函数 GUI_StoreKeyMsg()
把消息数据(Key, PressedCnt)存进键盘缓冲器,Key 表示可以是任意扩展 ASCII 字符 (范围为 0x20
至 0xFF)或者任意预定义的 emWin 字符编码。PressedCnt 表示松开或者未按下的状态。
该函数可从中断服务程序调用。STemWin 的键盘输入管理器含有一个 FIFO 缓冲器,默认情况下最多
可以保存 10 个键盘事件。如果需要不同的尺寸,可以更改该值。
函数 GUI_SendKeyMsg()
把键盘数据发送到输入焦点所在窗口。如果没有窗口有输入焦点,则调用 GUI_StoreKeyMsg()函数将
{
// Cancel Button
GUI_EndDialog(hDlg, 1);
}
STM32-V5 开发板 STemWin 教程
break; } break; default: WM_DefaultProc(pMsg); } }
/* ********************************************************************************************************* * 函 数 名: _cbDesktop * 功能说明: 桌面窗口的回调函数 * 形 参:pMsg 消息指针 * 返 回 值: 无 ********************************************************************************************************* */ static void _cbDesktop(WM_MESSAGE * pMsg) {
/* K1 键按下 实现截图*/
BSP_OS_SemPost(&SEM_SYNCH);
break;
(1)
case KEY_DOWN_K2:
/* K2 键按下 实现 TAB 按键的功能*/
GUI_SendKeyMsg(GUI_KEY_TAB, 1);
break;
(2)
(4)
case KEY_DOWN_K3:
GUI_SendKeyMsg(GUI_KEY_LEFT, 1);
break;
(6)
case JOY_DOWN_R:
/* 摇杆 RIGHT 键按下 实现光标右移 */
GUI_SendKeyMsg(GUI_KEY_RIGHT, 1);
break;
(7)
case JOY_DOWN_OK:
/* 摇杆 OK 键按下 实现 OK */
int i; int NCode; int Id; WM_HWIN hDlg; WM_HWIN hItem;
hDlg = pMsg->hWin; switch (pMsg->MsgId) {
case WM_INIT_DIALOG: FRAMEWIN_SetFont(pMsg->hWin, &GUI_Font13_ASCII); FRAMEWIN_SetTextAlign(pMsg->hWin, GUI_TA_HCENTER); for (i = 0; i < 2; i++) { hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + i);
用户手册的第 20 章:按键 FIFO 教程。此工程主要分为两部分:
按键任务
STemWin 主任务
按键任务:
/* ********************************************************************************************************* * 函 数 名: AppTaskUserIF * 功能说明: 此函数主要用于得到按键的键值。 * 形 参:p_arg 是在创建该任务时传递的形参 * 返 回 值: 无
GUI_SendKeyMsg(GUI_KEY_ENTER, ault: /* 其它的键值不处理 */ break;
} }
BSP_OS_TimeDlyMs(10); } }
1. 按下按键 1 实现截图功能。 2. 实现 TAB 按键的功能。 3. 实现 CANCEL 的功能 4. 实现删除字符的功能,注意和 BACKSPACE 回个的区别。 5. 实现删除字符 6. 实现光标左移。 7. 实现光标右移。 8. 实现 OK 键功能。
STM32-V5 开发板 STemWin 教程
第31章 键盘输入(实体按键操作控件)
本期教程主要跟大家讲解键盘输入,这里我们通过开发板上面带的按键进行相关的操作,在后面会专门 的做一期 PS2 键盘的教程。
31. 1 描述 31. 2 驱动层 API 31. 3 实体按键操作 31. 4 总结
31.1 描述
*
静态数据
********************************************************************************************************
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
/* K3 键按下 实现 CANCEL 的功能 */
GUI_SendKeyMsg(GUI_KEY_ESCAPE, 1);
break;
(3)
case JOY_DOWN_U:
/* 摇杆 UP 键按下 实现删除字符功能,注意和 BACKSPACE 回格的区别*/
GUI_SendKeyMsg(GUI_KEY_DELETE, 1);
{
{ FRAMEWIN_CreateIndirect, "Edit winmode", 0,
90, 90, 140, 130, FRAMEWIN_CF_MOVEABLE},
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT0, 10, 10, 110, 20, 0, 15},
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT1, 10, 40, 110, 20, 0, 15},