OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4479|回复: 6

怎样可以让edit的编辑框中高位为0的不显示?

[复制链接]

27

主题

101

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1007
金钱
1007
注册时间
2015-7-26
在线时间
108 小时
发表于 2016-3-27 23:37:17 | 显示全部楼层 |阅读模式
5金钱
EDIT_SetDecMode(WM_GetDialogItem(hWin,GUI_ID_EDIT0),200,0,999999999,0,0);
  EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT0),10);
  EDIT_SetValue(WM_GetDialogItem(hWin,GUI_ID_EDIT0),value);

最大长度是10,显示的时候就除了value的值外其他值是0,例如value=12345;显示的就是0000012345,怎样可以让这高位为0的不显示出来呢?

最佳答案

查看完整内容[请看2#楼]

方法见下面的两个函数, 我就不多说了, 相信你能看懂的 /******************************************************************************************** 函 数 名: 有符号整数转换为字符串函数,高位为0,则不显示 调 用: CX_printh(u8 *str, s32 Dat,u8 len) 参 数: *str 字符串转换后保存的首地址 Dat:数值(+-0~4294967295); len:长度(即要显示的位数,最大只转换8位有效值) 返 回 值: ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3308
金钱
3308
注册时间
2013-4-10
在线时间
328 小时
发表于 2016-3-27 23:37:18 | 显示全部楼层
本帖最后由 likunxue 于 2016-3-28 02:01 编辑

方法见下面的两个函数, 我就不多说了, 相信你能看懂的



/********************************************************************************************
函 数 名: 有符号整数转换为字符串函数,高位为0,则不显示
调    用: CX_printh(u8 *str, s32 Dat,u8 len)
参    数: *str  字符串转换后保存的首地址
          Dat:数值(+-0~4294967295);
          len:长度(即要显示的位数,最大只转换8位有效值)
返 回 值: 转换结果保存 字符串指针所指向的地址中
********************************************************************************************/
void CX_printh(u8 *str, s32 Dat,u8 len)
     {   
     u8 i,tem,at,af;
     at = 0; //清标志位
     af = 0; //清标志位
     if(len>10)len=10;
     if(Dat < 0){Dat =-Dat; *str = '-'; str++; af = 0xff;}//如果是负数,先转为正数,并装入符号位                                          
     for(i=0;i<len;i++)
        {
        tem=(Dat/CX_pow(10,len-i-1))%10;//取得当前位数字
        if(tem == 0){if(at != 0){*str = 0x30; str ++;}}
        else{
            at = 0xff; //置标位位
            *str = tem + 0x30;
            str ++;
            }
        }
     if(at == 0 && af == 0xff)
       {
       str --;
       *str = '0';
       str ++;
       }
     else{
         if(at == 0 && af ==0){*str = '0'; str ++;}
         }
     *str = '\0'; //写入结束符号
     }
/********************************************************************************************
函数名:浮点数转化为字符串函数
调  用:CX_printf(*str, float Fdat,u8 Hc,u8 Fl);
参  数:*str 字符串转换后保存的首地址
        Fdat:数值(+-0.0005~999999.9999);         
        Hc:整数长度(即要显示的位数)
        Fl:小数长度(即要显示的位数)
返回值:转换结果保存 字符串指针所指向的地址中
********************************************************************************************/
void CX_printf(u8 *str, float Fdat,u8 Hc,u8 Fl)
     {  
     u32 const Pow[]={1,10,100,1000,10000,100000,10000000,100000000,1000000000};
     u32 Dat1, Dat2;
     u8 i,tem,at;
     if(Fdat < 0){Fdat = -Fdat;        *str ='-'; str ++; }
     if(Hc>8)Hc=8; //限制整数部份最多8个位
     if(Fl>4)Fl=4; //限制小数部份最多4个位的精度
     Dat1 = Fdat;  //取整数部份
     Dat2 = (Fdat-Dat1) * Pow[Fl];//取小数部份并将其转换为整数
     i = ((Fdat-Dat1)*Pow[Fl+1])- Dat2 *10; //四舍五入处理
     if(i>=5)
       {
       Dat2 += 1;
       if(Dat2 ==Pow[Fl]){Dat2 =0;Dat1 += 1;}
       }
     at = 0; //清标志位
     for(i=0;i<Hc;i++)        //处理整数部份
        {
        tem = (Dat1/Pow[Hc-i-1])%10; //取得当前位数字
        if(tem == 0){if(at != 0){*str = 0x30; str ++;}}
        else{
            at = 0xff; //置标位位
            *str = tem + 0x30;
            str ++;
            }
        }
     if(at == 0){*str = 0x30; str ++;}  //如果整数部份为零则补零
     *str = '.'; //写入小数点
     str ++;
     for(i=0;i<Fl;i++)          //处理小数部份
        {
        tem = (Dat2/Pow[Fl-i-1])%10; //取得当前位数字
        *str = tem + 0x30;
        str ++;
        }
     *str = '\0' ; //装入结束符号
     }
调用, 方法 定义一个数组,用内存管理申请的指针也行

  u8 Br[20];
u16 Dat = 12345; 这是要显示的数据(整数)
float  F = 123.123;

CX_printh(Br,Dat,5);   //先把数据转为指定的显示格式
LCD_word(10,24,(const char *)Br);//显示参数  

CX_printf(Br,F,3,3); //将浮点数转为字符串
LCD_word(10,24,(const char *)Br);//显示参数



这是在 19264 液晶屏中的显示调用, 你可以参考一下




回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-3-28 12:35:21 | 显示全部楼层
应该改不了,EDIT小工具没看到有设置显示模式的函数。或者你不要 开启EDIT的十进制模式,显示的时候将十进制数值转成字符串,然后在显示,这样高位为0的时候应该就不会显示了
回复

使用道具 举报

27

主题

101

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1007
金钱
1007
注册时间
2015-7-26
在线时间
108 小时
 楼主| 发表于 2016-4-11 14:43:17 | 显示全部楼层
显示的话只能改成字符显示了
回复

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2017-1-17 11:03:10 | 显示全部楼层
share 发表于 2016-4-11 14:43
显示的话只能改成字符显示了

大神,能不能把程序发一份参考下?
现在要输入用户的ID AGE HEIGHT WEIGHT信息并保存。
使用触摸屏软键盘输入。
初始想法是设置为十进制模式,但是不知道怎么输入了。
回复

使用道具 举报

14

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2014-1-14
在线时间
18 小时
发表于 2017-1-17 21:31:15 | 显示全部楼层
改成浮点数显示模式就行了。
回复

使用道具 举报

27

主题

101

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1007
金钱
1007
注册时间
2015-7-26
在线时间
108 小时
 楼主| 发表于 2017-1-20 12:55:33 | 显示全部楼层
无帝老三 发表于 2017-1-17 11:03
大神,能不能把程序发一份参考下?
现在要输入用户的ID AGE HEIGHT WEIGHT信息并保存。
使用触摸屏软键 ...

输入的话你就键盘按一下就是一个按键触发,显示在edit框对应的字符,按键输入完就把edit框的字符转化为数字进行比较
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-2 00:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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