驱动层API

键盘驱动层处理键盘消息函数。这些程序会在具体键(或组合键)被按下或松开时通知窗口管理器。
下表按字母顺序列出了驱动层键盘程序。详细描述如下。

|GUI_StoreKeyMsg()|把消息存储于指定键。|
|GUI_SendKeyMsg()|把消息发送至指定键。|

GUI_SendKeyMsg()

描述

把键盘数据发送到输入焦点所在窗口。如果没有窗口有输入焦点,则调用GUI_StoreKeyMsg()函
数将数据存储至输入缓冲器之中。

原型

voidGUI_SendKeyMsg(int Key, int Pressed);

|参数 |描述 |
|Key |可以是任意扩展 ASCII 字符 (范围为 0x20 至 0xFF)或者任意预定义的 emWin 字符编码。|
|Pressed|1 按下状态。0 松开 (未按下)状态。|

GUI_StoreKeyMsg()

描述

把消息数据 (Key, PressedCnt) 存进键盘缓冲器。

原型

void GUI_StoreKeyMsg(int Key, int Pressed);

应用层 API

下表按字母顺序列出了应用层键盘程序。详细描述如下。

程序 描述
GUI_ClearKeyBuffer() 清除键缓冲器。
GUI_GetKey() 返回键缓冲器中的内容。
GUI_StoreKey() 把键存储于缓冲器中。
GUI_WaitKey() 等待键被按下

ucGui(emWin)的对话框中怎么切换控件的焦点?

  1. 获得控件的句柄hItem=WM_GetDialogItem(HWin,EditLocateGet());
  2. 聚焦:WM_SetFocus(hItem);
  3. 切换控件的焦点,
GUI_SendKeyMsg(GUI_KEY_TAB, 1);//选择下一个聚焦控件
GUI_SendKeyMsg(GUI_KEY_BACKTAB, 1);//选择上一个聚焦控件

例如:

if(WM_HasFocus(WM_GetDialogItem(HWin,ID_BUTTON_MINUS))){ //如果聚焦在"-"按键
    GUI_SendKeyMsg(GUI_KEY_TAB, 1);//选择下一个聚焦控件
}