emWin—数字软键盘
生活随笔
收集整理的這篇文章主要介紹了
emWin—数字软键盘
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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);(2)獲取按鍵的文本
在鍵盤窗口的回調函數中,當相應的按鍵按下,則獲取該按鍵的文本,用按鍵控件函數BUTTON_GetText()實現。定義一個數組buff[],來存儲按鍵的文本。
case ID_BUTTON_2: // Notifications sent by '1'switch(NCode) {case WM_NOTIFICATION_CLICKED:BUTTON_GetText(pMsg->hWinSrc,&buff[j],sizeof(buff));j++;break;case WM_NOTIFICATION_RELEASED:break;}break;0~9對應的數字按鍵均如此。
(3)發送文本、刪除文本、退出窗口
①發送文本,使用GUI_SendKeyMsg()函數;(具體使用可以參考函數手冊)
②刪除文本,仍可使用GUI_SendKeyMsg()函數,參數參考手冊如下章節
其中,GUI_KEY_BACKSPACE即是在文本模式下,清除光標前面的一個字符,可使用GUI_SendKeyMsg(GUI_KEY_BACKSPACE, 1)清除編輯框的字符。
我在Backspace對應按鍵回調函數下,清空數組buff,注意要添加頭文件#include “string.h”。
③退出窗口
附圖:
總結
以上是生活随笔為你收集整理的emWin—数字软键盘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows 各版本镜像下载地址
- 下一篇: Kafka安装配置(SASL/SCRAM