自定义Edit控件控制输入范围
//自定义Edit,实现十六进制输入控制,使用OnChar()函数实现
//MyEdit.h
#pragma once class CMyEdit : public CEdit {
DECLARE_DYNAMIC(CMyEdit) -----------------------① public:
CMyEdit(){};
protected:
DECLARE_MESSAGE_MAP() ----------------------------②
public:
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); ------③
};
//MyEdit.cpp
#include "stdafx.h" -----------------------------------④
#include "MyEdit.h" IMPLEMENT_DYNAMIC(CMyEdit, CEdit) BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
ON_WM_CHAR()
END_MESSAGE_MAP() void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if((nChar>=&&nChar<=)||(nChar>=&&nChar<=) || //0~9, A~F
(nChar>=&&nChar<=) || (nChar==) || //a~f, space,
(nChar == ) || nChar == ){ //backspace, delete
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
}
#pragma once 防止重复编译,头文件很可能会被多个cpp文件包含,这样一方面节省时间,另一方面防止类或者变量重复定义(全局变量可使用extern),c语言里面采用:
#ifndef
#define __MYEDIT_H__
...
#endif
①DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏。
同时还有一对宏DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE是为了“动态创建”类的实例而定义的宏。new可以用来创建对象,但不是动态的。比如说,你要在程序中实现根据用户输入的类名来创建类的实例:
char szClassName[];
cin >> szClassName;
CObject *pOb = new szClassName; //错误
这里就要用到DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE。
②DECLARE_MESSAGE_MAP(),消息映射声明,有了这个之后这个类才能接收系统消息,这个可是Windows核心之一^_^
③消息声明,这里采用OnChar函数,可采用的按顺序发生的有OnKeyDown()、OnChar()、OnKeyUp(),在这个函数里面控制键盘按下之后的处理,我这里是要输入十六进制字符,使用第一个参数UINT nChar控制输入,同时还要考虑空格键和删除键。
④stdafx.h:标准系统包含文件和经常使用但不经常变化的项目特定包含文件的包含文件,这些文件用于生成预编译头文件 Projname.pch 和预编译类型文件 Stdafx.obj。
所谓头文件预编译就是把一个工程中使用的一些MFC标准头文件(如windows.h、Afxwin.h)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
1、所有MFC实现文件都有#include “stdafx.h”
2、#include “stdafx.h”必须添加到.cpp文件的第一行
自定义Edit控件控制输入范围的更多相关文章
- 【aardio】如何让edit控件只能输入数字、小数点及 - 号
import win.ui; /*DSG{{*/ var winform = win.form(parent=...; text="aardio Form";right=349;b ...
- VC++6.0/MFC中如何限制Edit控件输入 例子,只能输入0和1
1.Insert -> New Class -> 在Base Class中选择CEdit,在Name中输入CMyEdit. 2.在左边的ClassView中,右键击CMyEdit,选择Ad ...
- Vue input 控件: 通过自定义指令(directive)使用正则表达式限制input控件的输入
前言: 网站中的input输入框使用非常广泛,因业务场景不同需要对输入框做合法性校验或限制输入,比如电话号码.邮件.区号.身份证号等.input框的不合法内容主要有两种方式处理:1.用户输入内容后,通 ...
- 2018-8-10-win10-uwp-验证输入-自定义用户控件
title author date CreateTime categories win10 uwp 验证输入 自定义用户控件 lindexi 2018-08-10 19:16:51 +0800 201 ...
- asp.net中自定义验证控件
在windows2003中,可能iis版本太底,不支持TextBox的类型设为Number类型,所以会报错,所以去掉后直接用验证控件来控制必须输入数字好了. <asp:RegularExpres ...
- C#自定义ip控件
前言:由于项目中有ip输入,但C#中又没有IP控件,如果直接放4个TextBox感觉又怎么好,还不好控制,于是可以通过自定义控件的方式来解决,就又了下面的自定义ip控件,该控件功能基本完善,如果还有未 ...
- VC中edit控件使用
SetSel(start,end)作用:定制EDIT的所选择内容.间接地可以用于定位光标位置. 使用例子:EXP1:设置光标CEdit* pEdit=(CEdit*)GetDlgItem(I ...
- 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件
好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...
- 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
概述 最近,有客户向我们请求开发一个前端下拉控件,需求是显示了一个列表,其中包含可由用户单独选择的项目控件,该控件将在下拉列表中显示多选TreeView(树形图). 如今WijmoJS已经实现了该控件 ...
随机推荐
- hdu1004Let the Balloon Rise
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- Universal Image Loader_图片异步加载
Universal Image Loader 是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示.所以,如果你的程序里需要这个功能的话,那么不妨试试它.他本来是 ...
- bootstrap 3 のcheckbox-inline
<div class="form-group"> <p class="control-label"><b> ...
- 解决jquery zclip 插件点击无效的问题
使用jquery zclip 用于页面复制文本内容. 首先引入js <script type="text/javascript" src="../js/jquery ...
- php 查找数组中是否存在某项,并返回指定的字符串,可用于检查复选,单选等
/** * 查找数组中是否存在某项,并返回指定的字符串,可用于检查复选,单选等 * @param $id * @param $ids * @param string $returnstr * @ret ...
- TensorFlow 深度学习笔记 逻辑回归 实践篇
Practical Aspects of Learning 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有 ...
- MySQL- InnoDB锁机制
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我们先介绍一点背景知识 ...
- jquery实现隐藏显示层动画效果、仿新浪字符动态输入、tab效果
已经有两年多没登陆csdn账号了,中间做了些旁的事,可是现在却还是回归程序,但改做前端了,虽然很多东西都已忘得差不多了,但还是应该摆正心态,慢慢来,在前端漫游,做一只快乐双鱼. 路是一步一步走出来的, ...
- 【java读书笔记】——java开篇宏观把控 + HelloWorld
学完java有一段时间了,一直没有做对应的总结,总认为有一种缺憾.从这篇博客開始,将自己平时的学习笔记进行总结归纳,分享给大家. 这篇博客主要简单的介绍一下java的基础知识,基本的目的是扫盲.原来仅 ...
- 华为OJ机试训练(一)
题目1 -- 通过输入英文句子.将每一个单词反过来,标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? 比如输入:Hello, I need an apple. ...