vc++文本框的编辑
新建mfc应用程序,单文档,起名Text,先编译一下
首先要创建一个插入符,用CreateSolid
窗口的高度宽度,可以通过GetSystemMetrics()函数获取
视类是覆盖在框架类之上的
创建消息响应函数,增加并编辑
设置宽高
但是GetSystemCaret会隐藏,所以需要把它显示一下
用ShowCaret()函数
如何让插入符根据字体的大小去改变
首先要获取到字体描述表中字体的信息,用一个函数(可以根据英文意思猜想一下)
GetTextMetrics ,他的结构体中需要一个指针
结构体中包含了很多成员,如高度,升序(tmAscent),降序(tmDscent)
首先构造一个DC,用CClientDC
用法是:CClientDC dc(this);//this一般指向本窗口或当前活动视图dc.TextOut(10,10,str,str.GetLength());//利用dc输出文本
CDC类有很多成员函数,可以利用dc调用成员函数,这样可以获取到字体信息了
高度宽度可以重新设置获取,为什么/8,因为这只是找一个正常的值
输出文字用CString类,有一个可变长度的字符组成
输出用TextOut
运行(注以图片作插入符的没写)
LoadString可以装载一个nID资源,到现存的String当中,
在蓝色空白处双击
修改ID和Caption
加载字符串资源,然后利用pDC再次将其在(0,200)的位置将str输出
运行
路径城:就像打仗划界线一样,走的轨迹就是路径城
创建一个路径城将刚才的字体用一个矩形圈起来
如何获取一个字符的长度
用GetTextExtend函数,传递字符串,返回CSize对象,有两个成员变量,表示宽度和高度
可以运行看一下,并没有矩形
可以将beginpath和endpath的注释掉,在运行一次
做一个网格状,空间多留几个像素,如10ge,画横线,竖线
还在下面写
做剪切区域
如何改变定位的位置,用户在窗口每输入一个字符的时候就多了一个
增加一个成员变量
先添加消息响应
增加成员变量
先初始化,清空
再添加一个消息响应
将插入符移动,用SetCaretPos()函数,参数只有一个点
运行,图像插入符可以移动了
清空CString保存的对象
添加成员变量
初始化为零
将初值保存下来
0x0d表示回车
求字体的高度,用Get。。。求字体度量,求当前字体的dc
对回车的处理
对退格键的处理,删除一个个字符,插入符就向前移动,如何实现呢
删除时就是让输出的字符在屏幕上看不见,退格键的阿斯克码十六进制16,十进制8,0x08
1 获取文本色,文本颜色是背景色,我们就看不见了,
2 输出字符串,
3 然后减掉一个字符
4 然后设置回他先前的颜色
否则就将字符加到m_strLine中,最后再一次输出
如何让插入符跟随自己输入而移动
又如何确定位置,坐标的移动,然后利用SetCarePos移动到这个点
如何能够运用另一种字体编辑文本呢?用CFont
必须先初始化,与字体资源关联起来
有三个参数,大小,字体名,CDC指针
创建字体
将字体选单设备描述表中,在pOld中
再用dc将其选择则回去
运行
中文却被擦除掉了
这只是一个简单的字处理。c++提供了很丰富的类,如CRichEditView,可以进行彩色的处理
比EditView功能更多
下面模拟字母变色功能,一个一个字母去变色,但如果想达到平滑的效果
用DrawText
设置定时器
增加消息响应
每隔100毫秒就发送
增加一个成员变量
初始化为零
绘制一个矩形,横坐标为零,纵坐标200,文本颜色输出
运行时会发现文本颜色一个一个自动变色
vc++文本框的编辑的更多相关文章
- HTML:<input type="text">文本框不可编辑的方式
1.<input type="text" name="name" value="姓名" disabled /> 该方式显示的文本 ...
- 实现表单input文本框不可编辑的三种方法
感谢原文作者:青灯夜游 原文链接:https://www.php.cn/div-tutorial-413133.html 目录 问题 实现方式 1.οnfοcus=this.blur() 2.read ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面如何让文本框可以输入,文本框可以编辑
选中一个文本框,然后在属性中双击输入配置的OnMouseDown事件(也可以是别的事件,但都是通过这种方法) 在左侧点击写变量,然后输入类型改成VisuDialos.Numpad(数字键盘方式), ...
- MFC入门示例之静态文本框、编辑框
点击按钮计算文本框中文本长度 void CMFCApplication1Dlg::OnBnClickedButton1() { CString strInput; GetDlgItemText(IDC ...
- 使select文本框可编辑可选择(jQuery插件)
最近做项目中用到了这个插件,正好分享下. 1. 需要用的js包点击下载,在项目中引入该js. <script src="${pageContext.request.contextPa ...
- MFC设置静态文本框,编辑框等控件背景和字体颜色
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnC ...
- 使input文本框不可编辑的3种方法
一:disabled disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值.设置后文字的颜色会变成灰色.d ...
- Unity3D 之UGUI 文本框和编辑框
这里来讲解一下unity3D自带的UI功能,自带的UI也叫UGUI功能非常的强大,比起NGUI,更加的灵活,让用户能够更加容易的去使用. 首先创建一个文本Text 然后是文本相对应的属性 这里的属性比 ...
- js动态实现文本框不可编辑状态
两种方法: $("#id").attr("readOnly",false); 不可编辑,可以传值 $("#id").attr("d ...
随机推荐
- PHP循环输出二维数组的数据
//下面是一个例子$g_id = isset($_GET['id'])?$_GET['id']:'1';//定义变量$g_id,使用三元运算符是为了避免出现waring $p_id = ($g_id& ...
- 优化 RequireJS 项目(合并与压缩) 【已翻译100%】
英文原文:Optimize (Concatenate and Minify) RequireJS Projects 标签: RequireJS Node.js 参与翻译 (1人) : 裴宝亮 本文将演 ...
- BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)
手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/article/details/79506484 题目链接: (Lu ...
- opencart的语言包安装
语言包复制到对应的目录: 前台:将档案上传至商店根目录\catalog\language\ 后台:将档案上传至商店根目录\admin\language\ 在后台: 增加了中文语言包 ========= ...
- Spring MVC学习总结(2)——Spring MVC常用注解说明
使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02 之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...
- h264封包介绍
这个要看你怎么理解了.和MPEG2.MPEG4相比,H.264字节流中帧的形式发生了变化.以视频帧为例,MPEG2和MPEG4字节流在传输的时候提取帧的关键参数,将其封装入传输包首部,比如TS包或RT ...
- 非form表单提交的数据就要用@requestbody注解获取http传过来的值,尤其json
非form表单提交的数据就要用@requestbody注解获取http传过来的值,尤其json
- C#版winform实现UrlEncode
在Asp.net中可以使用Server.HTMLEncode和Server.URLEncode 将文本或URL的特殊字符编码,但在控制台或Winform程序中没有办法使用到这些方法, 解决办法:右击项 ...
- linux命令之man和info
linux命令之man和info man ➜ ~ man ls result: LS(1)中1这样的数字的意义例如以下所看到的: 代号 内容 1 用户在shell环境中能够操作的命令或可运行文件 2 ...
- HDUOJ 水果
/*水果 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营着一个不大的水果店.他觉得生存之道就是经营最受顾客欢迎的水果. 如今他想要一份水果销售情况的明细表,这样Joe就能够非常easy ...