专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
请教STemWin实体按键如何传入驱动API?
2019-12-19 18:13
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
3457
10
11
本帖最后由 styleno1 于 2014-5-22 11:59 编辑
汗颜,手册上愣是没找到明白的说明。
请各位一键点破!
思路说明:
一个进程键盘检测,一个进程GUI_Exec(),按下按键,发出键值,GUI进程调用初始化传递的Callback响应。
编辑说明:补充
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
styleno1
2019-12-20 07:34
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{
{ 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},
{ BUTTON_CreateIndirect, "Ok", GUI_ID_OK, 10, 80, 50, 20 },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 70, 80, 50, 20 },
};
复制代码
回调函数:
static void _cbDialog(WM_MESSAGE * pMsg)
{
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); // Get the handle of the edit widget
EDIT_AddKey(hItem, GUI_KEY_ADD);
EDIT_SetText(hItem, "Hello world!"); // Fill widget with text
EDIT_SetSel(hItem, 0, -1); // Select the whole contents of the edit field
}
break;
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
{
case GUI_KEY_ESCAPE:
GUI_EndDialog(hDlg, 1);
break;
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
switch (NCode)
{
case WM_NOTIFICATION_RELEASED: // React only if released
if (Id == GUI_ID_OK)
{ // OK Button
GUI_EndDialog(hDlg, 0);
}
if (Id == GUI_ID_CANCEL)
{ // Cancel Button
GUI_EndDialog(hDlg, 1);
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
复制代码
任务循环代码:
GUI_Delay(10);
复制代码
按键发送:
GUI_SendKeyMsg(GUI_KEY_ESCAPE, 1);
复制代码
补充描述:
发送按键,没有触发回调函数:WM_KEY。
加载中...
查看其它10个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
- {
- { 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},
- { BUTTON_CreateIndirect, "Ok", GUI_ID_OK, 10, 80, 50, 20 },
- { BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 70, 80, 50, 20 },
- };
复制代码回调函数:
- static void _cbDialog(WM_MESSAGE * pMsg)
- {
- 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); // Get the handle of the edit widget
- EDIT_AddKey(hItem, GUI_KEY_ADD);
- EDIT_SetText(hItem, "Hello world!"); // Fill widget with text
- EDIT_SetSel(hItem, 0, -1); // Select the whole contents of the edit field
- }
- break;
- case WM_KEY:
- switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
- {
- case GUI_KEY_ESCAPE:
- GUI_EndDialog(hDlg, 1);
- break;
-
- 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
- switch (NCode)
- {
- case WM_NOTIFICATION_RELEASED: // React only if released
- if (Id == GUI_ID_OK)
- { // OK Button
- GUI_EndDialog(hDlg, 0);
- }
- if (Id == GUI_ID_CANCEL)
- { // Cancel Button
- GUI_EndDialog(hDlg, 1);
- }
-
- break;
- }
- break;
- default:
- WM_DefaultProc(pMsg);
- }
- }
复制代码任务循环代码:
- GUI_Delay(10);
复制代码按键发送:
- GUI_SendKeyMsg(GUI_KEY_ESCAPE, 1);
复制代码补充描述:
发送按键,没有触发回调函数:WM_KEY。
一周热门 更多>