硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6935|回复: 6
收起左侧

[emWin] 自定义控件回调函数的概要指南

[复制链接]

210

主题

1044

回帖

1684

积分

至尊会员

More we do, more we can do.

积分
1684
发表于 2015-6-5 15:49:08 | 显示全部楼层 |阅读模式
不清楚Eric有没有相关的帖,可能是重复内容。
主要是面向不满足于控件固有功能的需求,比如按键映射、外观等。emWin是基于层次式事件响应的架构,代码重用非常方便。

实例说明,以Dropdown为例:
1、回调函数的类型:
  1. static void xxxx_DROPDOWN_Callback(WM_MESSAGE *pMsg);
复制代码
2、函数实现,与窗口是类似的:
  1. static void xxxx_DROPDOWN_Callback(WM_MESSAGE *pMsg)
  2. {
  3.     const WM_KEY_INFO *pInfo;
  4.     switch (pMsg->MsgId)
  5.     {
  6.     /* 重写部分按键响应 */
  7.     case WM_KEY:
  8.         pInfo = (WM_KEY_INFO*)pMsg->Data.p;
  9.         switch(pInfo->Key)
  10.         {
  11.         case GUI_KEY_LEFT1:
  12.             GUI_StoreKeyMsg(GUI_KEY_BACKTAB, 1);
  13.             break;
  14.         case GUI_KEY_LEFT2:
  15.             GUI_StoreKeyMsg(GUI_KEY_TAB, 1);
  16.             break;
  17.         default:
  18.             DROPDOWN_Callback(pMsg);
  19.         }
  20.         break;
  21.     default:
  22.         DROPDOWN_Callback(pMsg);
  23.         break;
  24.     }
  25. }
复制代码
可以看到,需要重写的部分,自行处理,其余调用默认回调函数。
3、初始化调用:
  1. WM_SetCallback(hItem, xxxx_DROPDOWN_Callback);
复制代码
总结:就这样,本函数实现了按键的功能映射,而不需要在意按键扫描的键值。

评分

参与人数 1 +10 收起 理由
eric2013 + 10

查看全部评分

回复

使用道具 举报

334

主题

2036

回帖

3043

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3043
发表于 2015-6-5 16:40:43 | 显示全部楼层
[s:141]

在用资源列表创建的时候,怎么把自己的回调函数连接到那个特定的控件上呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106904
QQ
发表于 2015-6-5 22:24:09 | 显示全部楼层
感谢楼主分享。[s:151]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106904
QQ
发表于 2015-6-5 22:26:24 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:[s:141]

在用资源列表创建的时候,怎么把自己的回调函数连接到那个特定的控件上呢?
 (2015-06-05 16:40) 
可以在对话框回调函数的初始化消息里面调用下这个函数:WM_SetCallback(hItem, xxxx_DROPDOWN_Callback);

hItem填写控件句柄,应该可以的。
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
发表于 2015-6-10 08:32:33 | 显示全部楼层
[s:143]  [s:143]  [s:143]  [s:143]
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2015-6-10 09:16:03 | 显示全部楼层
没看明白什么意思
回复

使用道具 举报

9

主题

24

回帖

51

积分

初级会员

积分
51
发表于 2016-9-13 08:55:33 | 显示全部楼层
GUI_KEY_LEFT1这个是自己定义的按键响应事件吗,要是可以得话,分享一下相当工程文件研究研究,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 11:16 , Processed in 0.409250 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表