MiniGUI 自定义控件教程5

本文档详细介绍了如何在MiniGUI中扩展自定义控件SLEditEx,实现了文本和数字编辑模式,包括字符过滤、输入范围限制等功能。通过覆盖父类CTRL_SLEDIT的功能,利用控件变量和自定义消息接口进行功能扩展。
摘要由CSDN通过智能技术生成

接着上次的教程继续。上次以ButtonEx控件的开发为例介绍了如果自己完全重新开始写控件,这次我以一个扩展单行编辑框控件为例介绍如何在原有控件的基础上扩展自定义功能(继承原有控件功能)。

一、功能确定

MiniGUI 原来的单行编辑框控件CTRL_SLEdit除了具有编辑框的基本编辑功能外,就提供了一个限制输入字符长度的功能。没有类似MFC中CEdit限制输入类型,字符还是数字,数字还可以限制范围(不过CEdit是在输入完之后才能判断的)。不过这些功能对于应用程序还是比较有用的。于是我决定在CTRL_SLEDIT的基础上扩展这些功能:

1、2种编辑模式:文本;数字。文本模式可以输入任意字符,数字模式只能输入0~9、+、-和小数点。

2、文本模式提供过滤输入字符的功能,能够指定屏蔽掉特定的字符;提供反向过滤功能,就是能够指定只允许输入特定的字符。

3、数字模式提供指定是否限定输入整数;并在此基础上提供指定输入范围功能。

二、概要设计

这里因为继承了CTRL_SLEDIT,所有只需专注控件的扩展功能就行了。要实现以上功能,最关键的就是在CTRL_SLEDIT接受到键盘输入之后,把输入显示到屏幕上之前,进行自己的过滤算法判定;当输入的是不符合用户设定的字符则截断,不发送给父类CTRL_SLEDIT处理(这样它就显示不出来了);当输入是符合用户设定的字符就发送给父类处理(这样它就能正常显示出来)。流程图如下:

Figure 1 
图 1 CTRL_SLEDIT流程图

1:EEXMODE_TEXT

文本模式能让用户指定不允许输入某些字符(过滤),还是只允许输入某些字符(反过滤)。不过注意,这里针对的是字符,而不是字符串。字符串又要麻烦很多了。这个模式我只是顺带做了一下,下面的数字模式才是比较实用的。(汉字是占2个字符[字节],所以这里MS也不能过滤了 -_-||)

2:EEXMODE_DIGITAL

首先数字编辑模式就只能输入’0~9’、’+’、’-‘、’.’这些字符。在此基础上能让用户选择能否输入小数,开启的话就能输入小数;关闭的话就能输入整数。还能让用户指定数值的输入范围(闭区间)。

三、详细设计

1:数据结构

SLEditEx? 的控件变量都是实例变量。控件变量数据结构我命名为EEXDATA:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值