zoukankan      html  css  js  c++  java
  • emWin(ucGui)的Edit控件退格处理方法 worldsing

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

    EDIT_SetBinMode()

    EDIT_SetDecMode()

    EDIT_SetHexMode()

    EDIT_SetFloatMode()

     

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

    EDIT_GetCursorCharPos()

    EDIT_SetCursorAtChar()

     

    代码:

    /*********************************************************************

    * 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);

    }

     

    运行效果:

  • 相关阅读:
    vue的自定义组件和组件传值
    VUE的语法笔记
    Vue 的语法
    about use Vue of methods
    移动端使用下拉加载的简单方法
    深入理解nodejs的next函数。koa的使用 app.params的使用
    ACM输入输出超级外挂(朋友你渴望力量吗)fread版本
    Codeforces 1028C(面积并/思维)
    HDU 2457(AC自动机+dp)
    HDU 2825(AC自动机+状压dp)
  • 原文地址:https://www.cnblogs.com/worldsing/p/4169939.html
Copyright © 2011-2022 走看看