中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-31 23:00
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » DOS图形记事本(基于GUI)源代码及设计文档 查看 4,830 回复 17
楼 主 DOS图形记事本(基于GUI)源代码及设计文档 发表于 2007-07-26 16:22 ·  中国 辽宁 大连 甘井子区 电信
中级用户
★★
www.ecgui.com
积分 272
发帖 123
注册 2006-09-23 07:38
19年会员
UID 63446
状态 离线
DOS图形记事本,名称为 X-Editor 目前版本为 0.0.1 .

基于微型嵌入式GUI(http://www.ecgui.com

运行截图




目前可以实现简体中文(GB2312),英文的编辑.尚不具备输入法.将在下个版本中提供.

记事本源代码,可执行文件,设计文档 打包

下载: xedit.zip
http://www.ecgui.com/bbs

微型嵌入式GUI-green-DOS 16bit 版本



下载: 
http://www.ecgui.com/bbs

[ Last edited by ecurb2006 on 2010-1-6 at 13:22 ]
[已使用 Gemini 解答]
Gemini 解答

技术背景与功能说明

该帖子介绍的 X-Editor 是基于自制微型嵌入式 GUI 库的 DOS 图形记事本,核心特性与实现限制如下:

  1. 字符编码支持
    仅支持 GB2312 简体中文与英文,未集成输入法(需后续版本补充)。这符合 2000 年代前后 DOS 中文软件的常见设计——当时 DOS 下的输入法多为独立 TSR(内存驻留程序),需 GUI 库额外适配输入法接口(如读取键盘钩子或输入法输出缓冲区),初期版本未实现属于合理的功能迭代规划。

  2. GUI 库依赖
    基于作者开发的「微型嵌入式 GUI-DOS 库」,需配合该库提供的窗口管理、消息循环、控件绘制等底层接口。早期 DOS 下无原生图形 GUI 框架,此类自制库通常通过直接操作 VGA 显存(如 13h 图形模式)实现界面渲染,需自行处理窗口层级、重绘、消息分发等逻辑,开发复杂度较高。

  3. 下载链接说明
    原帖中 ecgui.com 相关下载链接在 2010 年后可能失效,但作者后续在 2010 年的补充回复中指出「www.ecgui.com/bbs 里有下载」,这是当时论坛分享资源的典型方式(依赖个人站点或论坛附件)。

后续讨论中的关键问题与修正

该帖子的后续回复(如 zqlcch 的反馈)暴露了 GUI 库的早期 bug,作者已针对性修正:

  • 控件键盘交互缺失:初期 CheckBox 不支持空格键切换状态、无 Tab 焦点切换,作者在 2007-07-30 版本中补充了键盘消息处理(如监听 KEY_SPACE 事件触发 CheckBox 状态翻转,维护控件焦点链表实现 Tab 切换)。
  • 窗口关闭消息未分发:用户无法收到 GM_Close/GM_Destroy 消息,原因是 GUI 库未正确将「鼠标点击关闭按钮」「Alt+X 快捷键」等退出事件转换为标准窗口消息。作者在 2007-08-02 版本中修复了消息分发逻辑,并要求主窗口处理 GM_Close 时调用 QuitWindow 函数完成资源释放与退出流程。

历史局限性与时代背景

DOS 图形软件在 2000 年代已属「小众需求」——Windows 9x/XP 已普及,但部分嵌入式设备(如早期 POS 机、工业控制器)仍依赖 DOS 环境。此类自制 GUI 库的价值在于轻量化(适配 DOS 有限的内存资源),但功能完整性与兼容性远不及 Windows API,bug 较多属于早期迭代的正常现象。

若需复现或研究该软件,需注意:

  • 需使用 DOS 16 位编译器(如 Turbo C 2.0、Watcom C 10.x)编译源代码;
  • 需运行在真实 DOS 环境或 DOSBox 等模拟器中(Windows NT 内核以上系统无法直接运行 16 位 DOS 图形程序);
  • 依赖的 GUI 库需与 X-Editor 版本严格匹配,否则可能出现消息不兼容或控件绘制错误。
eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2 发表于 2007-07-26 17:45 ·  中国 福建 宁德 电信
初级用户
★★
积分 178
发帖 85
注册 2006-07-06 15:25
20年会员
UID 58125
状态 离线
ecurb2006 GUI界面不错,但还是有一些小问题。
checkbox等一些控件都不支持键盘操作,没办法用TAB键获得焦点,希望能改进。
3 微型嵌入式GUI应用开发QQ群(17440530) 发表于 2007-07-27 02:34 ·  中国 辽宁 大连 电信
中级用户
★★
www.ecgui.com
积分 272
发帖 123
注册 2006-09-23 07:38
19年会员
UID 63446
状态 离线
感谢网友Jack 建立QQ群。

QQ群号:17440530

欢迎对 微型嵌入式GUI 感兴趣的朋友加入,

验证消息为: ecurb2006 (我的ID:)
eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
4 修正CheckBox及Tab支持 发表于 2007-07-30 12:54 ·  中国 辽宁 大连 甘井子区 电信
中级用户
★★
www.ecgui.com
积分 272
发帖 123
注册 2006-09-23 07:38
19年会员
UID 63446
状态 离线

使CheckBox可以接受键盘操作(空格),还有 焦点 的响应
eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
5 发表于 2007-07-30 14:25 ·  中国 天津 电信
初级用户
★★
积分 178
发帖 85
注册 2006-07-06 15:25
20年会员
UID 58125
状态 离线
非常令人高兴的改动,我越来越喜欢ecurb了。
6 发表于 2007-07-30 18:19 ·  中国 广东 深圳 电信
初级用户
★★
积分 138
发帖 67
注册 2007-07-04 10:11
19年会员
UID 93093
性别 女
来自 云南
状态 离线
挺不错!
7 发表于 2007-07-31 13:34 ·  中国 天津 电信
初级用户
★★
积分 178
发帖 85
注册 2006-07-06 15:25
20年会员
UID 58125
状态 离线
另一个BUG是好像无法接收到GM_Close和GM_Destroy消息
我在窗口过程中的代码如下:

if (Msg.message==GM_Close)
{
getch(); printf("Close");
}

if (Msg.message==GM_Destroy)
{
printf("Close"); getch();
}

无论是用Alt+X还是用鼠标关闭窗口,都无法收到该消息啊。
8 GM_Close错误修正 发表于 2007-08-02 13:41 ·  中国 辽宁 大连 甘井子区 电信
中级用户
★★
www.ecgui.com
积分 272
发帖 123
注册 2006-09-23 07:38
19年会员
UID 63446
状态 离线
主窗口建立后,必须处理 GM_Close 消息,并调用 QuitWindow 函数,才可以退出窗口.

void QuitWindow(HAND hd);

目前只更新了 DOS-16bit 版本.

微型嵌入式GUI-DOS开发包-编译器-例子代码-组合 http://www.ecurb2006.com/blog/post/49.html

微型嵌入式GUI-DOS开发库 下载

微型嵌入式GUI应用开发群: 17440530 ( QQ群)

任何疑问: ecurb2006#gmail.com

感谢网友 zqlcch 提供bugs报告.
eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
9 发表于 2007-08-02 16:19 ·  中国 天津 电信
初级用户
★★
积分 178
发帖 85
注册 2006-07-06 15:25
20年会员
UID 58125
状态 离线
现在用鼠标关闭窗口可以正常收到消息,但Alt+X退出时还是收到不到
10 Alt+X 发表于 2007-08-02 22:41 ·  中国 辽宁 大连 甘井子区 电信
中级用户
★★
www.ecgui.com
积分 272
发帖 123
注册 2006-09-23 07:38
19年会员
UID 63446
状态 离线
属于强行退出吧:)
恩.也产生消息也可以:)明天继续更新.
eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
11 发表于 2007-08-02 23:16 ·  中国 安徽 马鞍山 电信
初级用户
积分 20
发帖 11
注册 2007-08-02 21:06
18年会员
UID 94527
性别 男
状态 离线
牛B
12 发表于 2007-08-03 08:24 ·  中国 山东 烟台 电信
初级用户
积分 95
发帖 40
注册 2007-05-02 08:53
19年会员
UID 87247
性别 男
状态 离线
谢谢分享,望早日升级
13 发表于 2007-08-06 15:58 ·  中国 广东 广州 荔湾区 电信
中级用户
★★
积分 282
发帖 126
注册 2006-05-17 22:29
20年会员
UID 55724
状态 离线
什么时候能支持:
GB13000.1-1993
GB18030-2000
GB18030-2005
人类存在的目的就是试图理解人类为何存在
14 re:13楼的朋友 发表于 2007-08-06 18:42 ·  中国 辽宁 大连 甘井子区 电信
中级用户
★★
www.ecgui.com
积分 272
发帖 123
注册 2006-09-23 07:38
19年会员
UID 63446
状态 离线
走支持Unicode的路
eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
15 发表于 2007-08-06 18:43 ·  中国 辽宁 大连 甘井子区 电信
中级用户
★★
www.ecgui.com
积分 272
发帖 123
注册 2006-09-23 07:38
19年会员
UID 63446
状态 离线
Unicode(UTF-8)在计划之中.
eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
论坛跳转: