硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3412|回复: 1
收起左侧

[emWin] 实体键4方向键如何操作EDIT 光标移动-----分享

[复制链接]

1

主题

0

回帖

11

积分

新手上路

积分
11
发表于 2017-7-12 16:25:52 | 显示全部楼层 |阅读模式
分享的原因
1.并不是为了炫耀什么的,算是一种回报吧,做项目借鉴安富莱很多实例(本人也是第一次使用EMWIN做界面设计,也算是菜鸟一个了,呵呵)
2.本人百度搜索发现实体键控制的项目资料很少,关于EDIT更无人分享
废话不说直奔主题了
1.首先需要定义标志位

            uint8_t Exited_flag=0;       // 光标聚焦到EDIT句柄的标志位
            uint8_t CursorCharPos=0;//该EDIT句柄中光标所在位置索引
           uint8_t  NumChars=0;      //改EDIT句柄中数据位数
2. 当聚焦到EDIT句柄的时候
                Exited_flag=1; 标志位置位

            CursorCharPos = (u8)EDIT_GetCursorCharPos(hItem); //查询当前EDIT句柄的位置索引
            NumChars=(u8)EDIT_GetNumChars(hItem);   //查询当前EDIT句柄的数据位数

3. 当聚焦到非EDIT句柄的时候
                Exited_flag=0; 标志位置位

            CursorCharPos = 0;            NumChars=0;   //查询当前EDIT句柄的数据位数
4. 按键左按下时判断
       if(Exited_flag==1) //进入EXIT 的标志位
    {
        if(CursorCharPos==0) //刚进入EXIT光标为O的判断
        {
              GUI_SendKeyMsg(GUI_KEY_BACKTAB, 1);
        }
        else
        {
            CursorCharPos--;
            if(CursorCharPos==0)
            {
                Exited_flag=0;
            }
            GUI_SendKeyMsg(GUI_KEY_LEFT, 1);
           }
    }
else GUI_SendKeyMsg(GUI_KEY_BACKTAB, 1);
5. 按键右按下时判断

       if(Exited_flag==1)
    {
           if(CursorCharPos<(NumChars-1))
        {
            CursorCharPos++;
            GUI_SendKeyMsg(GUI_KEY_RIGHT, 1);
        }
        else
        {        
            Exited_flag=0;
                GUI_SendKeyMsg(GUI_KEY_TAB, 1);
         }
    }
    else GUI_SendKeyMsg(GUI_KEY_TAB, 1);
6. 上下按键可控制数据加减   
关于小工具键盘反应你懂得  ,呵呵 ,此方法是本人验证了很久才确定的

评分

参与人数 1 +5 收起 理由
eric2013 + 5

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2017-7-13 00:51:11 | 显示全部楼层
非常感谢楼主的分享精神,给酷,[s:151]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 00:20 , Processed in 0.265046 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表