|
不清楚Eric有没有相关的帖,可能是重复内容。
主要是面向不满足于控件固有功能的需求,比如按键映射、外观等。emWin是基于层次式事件响应的架构,代码重用非常方便。
实例说明,以Dropdown为例:
1、回调函数的类型:- static void xxxx_DROPDOWN_Callback(WM_MESSAGE *pMsg);
复制代码 2、函数实现,与窗口是类似的:
- static void xxxx_DROPDOWN_Callback(WM_MESSAGE *pMsg)
- {
- const WM_KEY_INFO *pInfo;
- switch (pMsg->MsgId)
- {
- /* 重写部分按键响应 */
- case WM_KEY:
- pInfo = (WM_KEY_INFO*)pMsg->Data.p;
- switch(pInfo->Key)
- {
- case GUI_KEY_LEFT1:
- GUI_StoreKeyMsg(GUI_KEY_BACKTAB, 1);
- break;
- case GUI_KEY_LEFT2:
- GUI_StoreKeyMsg(GUI_KEY_TAB, 1);
- break;
- default:
- DROPDOWN_Callback(pMsg);
- }
- break;
- default:
- DROPDOWN_Callback(pMsg);
- break;
- }
- }
复制代码 可以看到,需要重写的部分,自行处理,其余调用默认回调函数。
3、初始化调用:- WM_SetCallback(hItem, xxxx_DROPDOWN_Callback);
复制代码 总结:就这样,本函数实现了按键的功能映射,而不需要在意按键扫描的键值。 |
评分
-
查看全部评分
|