emWin—数字软键盘
emWin界面需要一个编辑框,要在一个编辑框输入任意数字,原本打算通过设置按钮,控制编辑框数字的加减来实现,只是这样来实现任意数字的编辑,有点不方便,想着加一个数字软键盘。
1.建一个键盘窗口
用GUIBuilder建两个窗口,其中一个为主窗口,编辑框是主窗口中的一个控件,另一个作为键盘窗口(如下图),设置需要的按键。
功能:
- 点击编辑框,则弹出键盘窗
- Esc-隐藏键盘窗
- Backspace-消除编辑框数字
- Enter-确定显示输入的数字
2.功能的实现
(1)键盘窗口禁止聚焦
首先得让键盘窗口的按键禁止聚焦,通过BUTTON_SetFocussable(hItem, 0)函数来实现,于是,在点击编辑框,弹出键盘窗后,焦点仍然会聚集在编辑框。我弄的这个数字键盘一共有13个按键。
int i;
for(i=ID_BUTTON_0;i<=ID_BUTTON_12;i++)
BUTTON_SetFocussable(WM_GetDialogItem(pMsg->hWin,i), 0);