新建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++文本框的编辑的更多相关文章

  1. HTML:<input type="text">文本框不可编辑的方式

    1.<input type="text" name="name" value="姓名" disabled /> 该方式显示的文本 ...

  2. 实现表单input文本框不可编辑的三种方法

    感谢原文作者:青灯夜游 原文链接:https://www.php.cn/div-tutorial-413133.html 目录 问题 实现方式 1.οnfοcus=this.blur() 2.read ...

  3. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面如何让文本框可以输入,文本框可以编辑

    选中一个文本框,然后在属性中双击输入配置的OnMouseDown事件(也可以是别的事件,但都是通过这种方法)   在左侧点击写变量,然后输入类型改成VisuDialos.Numpad(数字键盘方式), ...

  4. MFC入门示例之静态文本框、编辑框

    点击按钮计算文本框中文本长度 void CMFCApplication1Dlg::OnBnClickedButton1() { CString strInput; GetDlgItemText(IDC ...

  5. 使select文本框可编辑可选择(jQuery插件)

    最近做项目中用到了这个插件,正好分享下. 1.  需要用的js包点击下载,在项目中引入该js. <script src="${pageContext.request.contextPa ...

  6. MFC设置静态文本框,编辑框等控件背景和字体颜色

    在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnC ...

  7. 使input文本框不可编辑的3种方法

    一:disabled disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值.设置后文字的颜色会变成灰色.d ...

  8. Unity3D 之UGUI 文本框和编辑框

    这里来讲解一下unity3D自带的UI功能,自带的UI也叫UGUI功能非常的强大,比起NGUI,更加的灵活,让用户能够更加容易的去使用. 首先创建一个文本Text 然后是文本相对应的属性 这里的属性比 ...

  9. js动态实现文本框不可编辑状态

    两种方法: $("#id").attr("readOnly",false); 不可编辑,可以传值 $("#id").attr("d ...

随机推荐

  1. node源码详解(五)

    本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource5 本博客同步在https://cnodejs.o ...

  2. 重新学习html和css

    当初学习前端的时候,属于快速入门那种,没有好好深入学习html和css.如今,在空闲时间重新拿起基础书学习,都会写到一些新的知识. 1.css实现圆角.渐变功能.使用border-radius以及li ...

  3. MongoDB简介、特点、原理、使用场景、应用案例

    简介 MongoDB[1] 是一个基于分布式文件存储的数据库.由C 语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB[2] 是一个介于关系数据库和非关系数据库之间的产品, ...

  4. Something about 博弈(POJ 3922 A simple stone game)

    先是题目,本来是第三次训练的题,在这特别提出来讲. 先是题目: E - A simple stone game Time Limit:1000MS     Memory Limit:65536KB   ...

  5. Remote Desktop安卓软件实现手机远程控制电脑

    这篇文章写的是利用Remote Desktop安卓软件实现手机远程控制电脑. 电脑上的操作: 鼠标右击计算机>属性>远程设置>计算机名 如下图:

  6. HDU 4518

    整理一下思路,明天再写... 这道题,其实就是求包含大于10的斐波那切数字的第K(K是斐波那契数)个数.注意到斐波那契数的爆炸性增长,所以在范围 内的符合要求的F数并不多吧.比如求第K个F数,那么,前 ...

  7. 【cl】eclipse基本设置(字体、配置JDK)

    字体       找到上面的菜单“windows”打开Preferences            在弹出的设置窗口中找到“colors and fonts”                    将 ...

  8. 【剑指offer】Q19:二叉树的镜像

    def MirroRecursively(root): # root is None or just one node, return root if None == root or None == ...

  9. Android开发之BUG专讲:入门篇(一)

    前言: 本文作者:周才智 转载须注明作者与出处.违者必究. 原文地址:http://segmentfault.com/a/1190000004380690 话说诸葛亮是一个优秀的程序员,每个锦囊都是应 ...

  10. git 本地项目推送至远程仓库

    1 在本地文件夹下创建一个 Git 仓库(如test目录下) git init 2 此时test文件夹即是你的maste主分支,你可以在改文件夹下写自己的项目 3 将test文件夹下的内容提交至暂存区 ...