中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » DOS图形记事本(基于GUI)源代码及设计文档
作者:
标题: DOS图形记事本(基于GUI)源代码及设计文档 上一主题 | 下一主题
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『楼 主』:  DOS图形记事本(基于GUI)源代码及设计文档 [已使用 LLM 解释]

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 ]
LLM 解释

技术背景与功能说明

该帖子介绍的 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
2007-7-26 16:22
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zqlcch
初级用户





积分 178
发帖 85
注册 2006-7-6
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

ecurb2006 GUI界面不错,但还是有一些小问题。
checkbox等一些控件都不支持键盘操作,没办法用TAB键获得焦点,希望能改进。


2007-7-26 17:45
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 3 楼』:  微型嵌入式GUI应用开发QQ群(17440530) 使用 LLM 解释/回答一下

感谢网友Jack 建立QQ群。

QQ群号:17440530

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

验证消息为: ecurb2006 (我的ID:)




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2007-7-27 02:34
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 4 楼』:  修正CheckBox及Tab支持 使用 LLM 解释/回答一下


使CheckBox可以接受键盘操作(空格),还有 焦点 的响应




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2007-7-30 12:54
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zqlcch
初级用户





积分 178
发帖 85
注册 2006-7-6
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

非常令人高兴的改动,我越来越喜欢ecurb了。


2007-7-30 14:25
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
windowsvesta
初级用户




积分 138
发帖 67
注册 2007-7-4
来自 云南
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

挺不错!


2007-7-30 18:19
查看资料  发短消息  网志   编辑帖子  回复  引用回复
zqlcch
初级用户





积分 178
发帖 85
注册 2006-7-6
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

另一个BUG是好像无法接收到GM_Close和GM_Destroy消息
我在窗口过程中的代码如下:

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

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

无论是用Alt+X还是用鼠标关闭窗口,都无法收到该消息啊。


2007-7-31 13:34
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 8 楼』:  GM_Close错误修正 使用 LLM 解释/回答一下

主窗口建立后,必须处理 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
2007-8-2 13:41
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zqlcch
初级用户





积分 178
发帖 85
注册 2006-7-6
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

现在用鼠标关闭窗口可以正常收到消息,但Alt+X退出时还是收到不到


2007-8-2 16:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 10 楼』:  Alt+X 使用 LLM 解释/回答一下

属于强行退出吧:)
恩.也产生消息也可以:)明天继续更新.




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2007-8-2 22:41
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ngdao
初级用户




积分 20
发帖 11
注册 2007-8-2
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

牛B


2007-8-2 23:16
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
john12900
初级用户





积分 95
发帖 40
注册 2007-5-2
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

谢谢分享,望早日升级


2007-8-3 08:24
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zyl910
中级用户





积分 282
发帖 126
注册 2006-5-17
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

什么时候能支持:
GB13000.1-1993
GB18030-2000
GB18030-2005




人类存在的目的就是试图理解人类为何存在
2007-8-6 15:58
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 14 楼』:  re:13楼的朋友 使用 LLM 解释/回答一下

走支持Unicode的路




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2007-8-6 18:42
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ecurb2006
中级用户

www.ecgui.com



积分 272
发帖 123
注册 2006-9-23
状态 离线
『第 15 楼』:   使用 LLM 解释/回答一下

Unicode(UTF-8)在计划之中.




eCGUI-微型嵌入式GUI/ DOS/Linux/uC/OS-II/等 图形界面开发
www.ecgui.com
2007-8-6 18:43
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: