emWin(ucGui)的Edit控件退格处理方法 worldsing

在enWin(ucGui)中EDIT控件在数值模式(十进制/十六进制/二进制/浮点数)下编辑是,没法使用BackSpace键进行退格,主要涉及到的函数有: 函数

EDIT_SetBinMode() ui

EDIT_SetDecMode() spa

EDIT_SetHexMode() blog

EDIT_SetFloatMode() 接口

 

将Edit控件一旦使用此类的模式是将没法BackSpace键进行退格删除,解决办法以下,响应Edit控件的按键消息,当收到BackSpace键时强制将光标退到上一个字符,那么就使用到接口函数即:获取当前的字符光标位置和设置指定字符位置光标。 get

EDIT_GetCursorCharPos() it

EDIT_SetCursorAtChar() sed

 

代码: 二进制

/********************************************************************* im

* cbEdit 编辑控件回调

*/

static void cbEdit(WM_MESSAGE * pMsg) {

    switch (pMsg->MsgId) {

    case WM_KEY:

        switch (((WM_KEY_INFO *)(pMsg->Data.p))->Key){

        case GUI_KEY_ENTER:

            price = EDIT_GetFloatValue(widgetsItemBuf[0]);

            WM_SetFocus(widgetsItemBuf[1]);    

            return;

        case GUI_KEY_BACKSPACE:

            if(((WM_KEY_INFO *)(pMsg->Data.p))->PressedCnt == 0)

            EDIT_SetCursorAtChar(widgetsItemBuf[0],EDIT_GetCursorCharPos(widgetsItemBuf[0]) - 1);

            break;

        }

    break;

    }

    EDIT_Callback(pMsg);

}

 

运行效果:

相关文章
相关标签/搜索