无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5333|回复: 15
打印 上一主题 下一主题

dos下 批处理也能实现 立体窗口 效果2010.06.30

[复制链接]
跳转到指定楼层
1#
发表于 2010-6-29 19:15:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
用 批处理 也可以实现 dos下 窗口的立体效果

winx.awk 用于为窗口 勾画边框,呈现立体效果
2010.06.30 调整软盘中文件放置,用GAWK2.15替换AWK2000版。
软盘影像:http://u.115.com/file/f5f4b9c385
winx2.rar
winx.vfd.gz 内容:
A:\DOS\WINX.AWK 一个AWK脚本,用于调用UCDOS特显实现屏幕指定区域画框功能
A:\dos\awk.exe 文本流处理工具 相当于一个小型计算机语言
A:\DOS\CHOIX.COM 用于获取用户键盘鼠标按键
A:\DOS\CTMOUSE.EXE DOS鼠标驱动
A:\DOS\EDIT.COM  DOS文本编辑器
A:\DOS\INPUT.COM 要求用户在屏幕指定位置进行内存变量赋值
A:\DOS\WBAT.COM  DOS下文本窗口设计工具,这里用它的 TEXT 功能
A:\DEMO\TESTWINX.BAT WINX.AWK应用展示
A:\DEMO\XYDEMO.BAT   WINX.AWK应用展示(交互实现获取 X*Y 的值)

A:\demo\m.bat        winx.awk 应用展示(呈现类win开始菜单)
A:\UCDOS\*.* 带特显和UCMOUSE功能的UCDOS98

涉及软件:
1、带有特显更能和ucmouse的ucdos
2、wbat
3、awk
4、choix
5、ctmouse

使用方法步骤
1.UCDOS 调用汉字系统和特显功能
RD16
KNL
RDFNT
TX

2.鼠标调用
CTMOUSE
UCMOUSE

3.WBAT的使用
WBAT TEXT 2,6 (BLUE ON WHITE) "DAFDSAFDASFDASF"
实现将指定文本内容显示在指定屏幕区域

4.AWK的使用 通过 winx.awk 脚本实现对屏幕指定区域画立体边框
ECHO.|AWK -f winx.awk -v x=2 y=6 h=1 l=15 ok=0
实现把屏幕第2 行第6列开始高度为1行宽度为15字符的区域画一个突起效果的边框

5.choix的使用
choix /c:o /m /n /s
等待用户通过键盘输入“o” 或者通过鼠标在屏幕上点击 字母"o" .唯一比choic 强大的地方就是可以等待用户鼠标点取字母。

[ 本帖最后由 dos时代菜鸟 于 2010-6-30 14:52 编辑 ]

winx1.jpg (35.25 KB, 下载次数: 77)

winx1.jpg

winx2.JPG (36.14 KB, 下载次数: 72)

winx2.JPG

winx3.JPG (35.08 KB, 下载次数: 73)

winx3.JPG
16#
 楼主| 发表于 2010-8-4 00:35:03 | 只看该作者
原帖由 2010玩玩玩 于 2010-8-3 23:45 发表
才发现这个,但下不了了。  有的兄弟PM偶个下载地址


http://u.115.com/file/f551cddfdb
sfz.vfd
回复

使用道具 举报

15#
发表于 2010-8-3 23:45:00 | 只看该作者
才发现这个,但下不了了。  有的兄弟PM偶个下载地址
回复

使用道具 举报

14#
 楼主| 发表于 2010-7-5 09:57:27 | 只看该作者
更新 winx.awk

winx.awk 的使用:用于为一定区域画框,呈现立体窗体效果
echo.|awk -f winx.awk -v x=? y=? h=? l=? ok=? C=?
ok 包含五个参数 0 1 2 3 4  分别表示:
0 外围一圈画框,用于窗体和简单自制按钮外框 突起
1 为0生成的窗体补框使其呈现被按下的效果    凹陷
2 外围2圈画框,主要转对 wbat 单个按钮设置  突起 要求 wbat按钮中 box 前景色与wbat.ini设置一致
3 在一定范围逐行呈现按钮效果 是0的循环     突起
4 在一定范围清屏 C 为颜色                       注意C要大写
5 在一定范围呈现隔行 按钮效果 是2的循环    突起 此时h为按钮个数 最多12个一列
事例:
echo.|awk -f winx.awk -v x=2 y=2 h=5 l=10 ok=5
表示在 第2行第2列开始 连续隔行勾画5个宽度为10字符的按钮边框

附上一个身份证 号码所在地查询
http://u.115.com/file/f551cddfdb
sfz.vfd

[ 本帖最后由 dos时代菜鸟 于 2010-7-5 10:01 编辑 ]

sfz1.JPG (15.03 KB, 下载次数: 61)

sfz1.JPG

sfz2.JPG (15.77 KB, 下载次数: 59)

sfz2.JPG
回复

使用道具 举报

13#
发表于 2010-7-2 08:03:00 | 只看该作者
不错不错,想不到现在在Windows横行的时间里,能再次看到DOS往日的辉煌,感觉真爽
回复

使用道具 举报

12#
 楼主| 发表于 2010-6-30 22:18:14 | 只看该作者
原帖由 netwinxp 于 2010-6-30 16:13 发表
两像素的白+黑 视觉效果要比一像素白+黑 外套一像素白框好,你可以看看windows里面的窗口、按钮控件是不是酱紫。


修改边框颜色,可以自行修改 winx.awk .
用1像素勾勒边框是因为不想破坏汉字。dos下choix 只能获取屏幕上文本文字,而用作图方式画上的文字无法通过choix+鼠标 截获。这也是为什么用wbat 的text 输出文本的原因。
每个汉字固定就占用那么几个像素,在文字边勾画边框本身已经侵占了文字范围,用2像素效果固然好,但是文字笔划也有可能被画掉,不美观。

[ 本帖最后由 dos时代菜鸟 于 2010-7-1 14:59 编辑 ]
回复

使用道具 举报

11#
发表于 2010-6-30 16:13:14 | 只看该作者
两像素的白+黑 视觉效果要比一像素白+黑 外套一像素白框好,你可以看看windows里面的窗口、按钮控件是不是酱紫。
回复

使用道具 举报

10#
 楼主| 发表于 2010-6-30 15:40:13 | 只看该作者
m.bat 内容如下:
-------------------------------------------------
@echo off
set tz=
:top
cls
wbat cls (blue on cyan)
wbat text 25,2 (blue on white) @a:\demo\m.bat:0
echo.|awk -f a:\dos\winx.awk -v x=25 y=2 h=1 l=79
echo.|awk -f a:\dos\winx.awk -v x=25 y=2 h=1 l=10
echo.|awk -f a:\dos\winx.awk -v x=25 y=80 h=1 l=1
choix /C:m. /m /n /s >nul
if errorlevel 2 goto end
wbat text 22,2 (blue on white) @a:\demo\m.bat:1
echo.|awk -f a:\dos\winx.awk -v x=22 y=2 h=3 l=10
set x=22
:loop1
echo.|awk -f a:\dos\winx.awk -v x=%x% y=2 h=1 l=10
echo.|awk '{print "set x="%x%+1}'>n.bat
call n.bat
if %x%*==25* goto end1
goto loop1
:end1
echo y|del n.bat >nul
set h=
set tz=
choix /C:fex /M /N /S >NUL
IF ERRORLEVEL 3 goto x
if errorlevel 2 goto e
if errorlevel 1 goto f
goto end
:f
set tz="f"
goto tz
:e
set tz="e"
goto tz
:x
set tz="x"
goto tz
:tz
wbat text 5,10 (+white on blue) @a:\demo\m.bat:tz0
wbat text 6,10 (blue on white ) @a:\demo\m.bat:tz1
echo.|awk -f a:\dos\winx.awk -v x=5 y=10 h=4 l=21
wbat text 7,23 (+red on white) "o"
echo.|awk -f a:\dos\winx.awk -v x=7 y=22 h=1 l=7
wbat text 5,30 (black on white) "x"
echo.|awk -f a:\dos\winx.awk -v x=5 y=30 h=1 l=1
choix /c:xo /m /n /s >nul
if errorlevel 1 set tzx=x
if errorlevel 2 set tzx=o
if %tzx%*==o* echo.|awk -f a:\dos\winx.awk -v x=7 y=22 h=1 l=7 ok=1
if %tzx%*==x* echo.|awk -f a:\dos\winx.awk -v x=5 y=30 h=1 l=1 ok=1
wbat text 10,10 (red on cyan) "按任意键继续"
pause>nul
if %tz%*==x.退出* goto end
set tz=
goto top
:0
(m)主菜单    按"m"键盘开始                                                   .
:1
f.文件
e.编辑
x.退出   
:tz0
通知               .
:tz1
你选择了 %tz%
             o.确定
                    .
:1_end

:end
cls
wbat cls (blue on cyan)
set tz=
回复

使用道具 举报

9#
 楼主| 发表于 2010-6-30 14:54:02 | 只看该作者
http://u.115.com/file/f5f4b9c385
winx2.rar

更新:
1、winx.awk 内部坐标进行微调
2、增加一个 demo\m.bat 展示脚本,实现类win95开始菜单效果。
回复

使用道具 举报

8#
发表于 2010-6-30 10:09:52 | 只看该作者
好资料,收藏学习,这种资料太少了
回复

使用道具 举报

7#
 楼主| 发表于 2010-6-30 08:38:42 | 只看该作者
原帖由 超级坏蛋 于 2010-6-30 07:52 发表
资源占用情况如何。?


我的工具箱中 gdi 界面就是基于这个原理制作
awk 运行后立即退出,不占用资源,ucdos 对内存的适应性更是 没得说,rdfnt/tx/ucmouse这三个 程序 会驻留内存提供图形接口支持。
ucdos各个组件内存占用情况表:
RD16              12K   内核
KNL                 37K   内核
RDFNT            15K    打印字体驱动
TX                  17K   特显驱动
UCMOUSE        3K     图形鼠标借口
PY                  26K    拼音输入法

AWK   2000年版本            74K
GAWK 2.15                    243K

可见,要实现立体窗体功能 RDFNT/TX/UCMOUSE 三个组件多占用内存资源 35K ,而GAWK 运行以后会立即撤离内存。
如果加载 了HIMEM.SYS 等内存管理模块,实现 预期功能 并不消耗太多系统资源。

如果 挂载 emm386 ram 模式,再通过 ucdos 的 emb 管理内存,RDFNT+TX+UCMOUSE+PY 将只占用12K常规内存。

[ 本帖最后由 dos时代菜鸟 于 2010-6-30 10:46 编辑 ]
回复

使用道具 举报

6#
发表于 2010-6-30 07:52:36 | 只看该作者
资源占用情况如何。?
回复

使用道具 举报

5#
发表于 2010-6-30 07:10:25 | 只看该作者
收藏备用了!谢谢楼主分享!
回复

使用道具 举报

4#
 楼主| 发表于 2010-6-29 23:34:08 | 只看该作者
关键在于 这个 winx.awk
是大批量改造出立体窗体效果 成为一件非常简单的事情。只需要一条命令,就可以把wbat的 text 输出改造成立体化。
回复

使用道具 举报

3#
发表于 2010-6-29 20:41:19 | 只看该作者
相当强悍,下下来学习了。
回复

使用道具 举报

2#
 楼主| 发表于 2010-6-29 19:25:55 | 只看该作者
更新 winx.awk

winx.awk 的使用:用于为一定区域画框,呈现立体窗体效果
echo.|awk -f winx.awk -v x=? y=? h=? l=? ok=? C=?
ok 包含五个参数 0 1 2 3 4  分别表示:
0 外围一圈画框,用于窗体和简单自制按钮外框 突起
1 为0生成的窗体补框使其呈现被按下的效果    凹陷
2 外围2圈画框,主要转对 wbat 单个按钮设置  突起 要求 wbat按钮中 box 前景色与wbat.ini设置一致
3 在一定范围逐行呈现按钮效果 是0的循环     突起
4 在一定范围清屏 C 为颜色                       注意C要大写
5 在一定范围呈现隔行 按钮效果 是2的循环    突起 此时h为按钮个数 最多12个一列
事例:
echo.|awk -f winx.awk -v x=2 y=2 h=5 l=10 ok=5
表示在 第2行第2列开始 连续隔行勾画5个宽度为10字符的按钮边框

附上一个身份证 号码所在地查询
http://u.115.com/file/f551cddfdb
sfz.vfd

[ 本帖最后由 dos时代菜鸟 于 2010-7-5 10:01 编辑 ]


附件
2010-7-5 09:57

sfz1.JPG (15.03 KB)
  

2010-7-5 09:57

sfz2.JPG (15.77 KB)
  


[ 本帖最后由 dos时代菜鸟 于 2010-7-5 10:03 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 05:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表