一种文本编辑器和控制台实现方案

一种文本编辑器和控制台实现方案
by Que's C++ Studio 阙荣文 20210602

源码请移步 github (https://github.com/TedQue/MyConsole)

0. 需求
在所有 Windows 标准控件中, Edit 大概是最复杂者之一.试想一下,实现 Edit 至少需要考虑以下问题:
    选择字体绘制字符
    响应键盘输入
    响应鼠标动作,准确选中指定字符
    访问系统剪贴板,支持热键 Ctrl-C, Ctrl-V 等
    计算长度宽度以正确设置滚动范围
    ...
这些还仅仅是一个标准 Edit 控件的最基本功能,其中的大量细节已经有点让人望而生畏了,然而 Windows 标准控件库中还有一个名为 RichEdit 的控件,
用于插入"富格式"文本,比如带颜色的文字,图片乃至数据库对象等等.Edit控件用于 Windows GUI app 简单输入是完全够用的,RichEdit 则有些不上不下,
一般需求用不上(使用 Edit 控件足矣),复杂需求(比如,即时通讯软件的输入框,需要插入表情,图片等)又不够用(其基于 OLE 对象的接口过时且难以使用).
此外,开发 Windows GUI app 常需要在某个窗口中滚动输出大量文本,这是一个很常见的需求,比如日志输出.某些时候我甚至想要是能把系统控制台窗口直接嵌入,也的确做过类似尝试,
利用 Windows 控制台 AllocConsole(), GetConsoleWindow() 等接口并非不能做到,然终有拼凑之嫌,不够优雅.

以上就是我的3个需求:
    简单文本编辑
    富格式文本编辑
    控制台文本输入输出
我把新控件老套的命名为 MyEdit 和 MyConsole.

1. 设计思路
<<设计模式>>第二章中以一个名为"Lexi"文本编辑器作为示例演示多种模式之用,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值