|
taowentao
高级用户
   
积分 739
发帖 111
注册 2004-11-30 来自 辽宁沈阳
状态 离线
|
『楼 主』:
个人编写的GUI图形界面软件
使用 LLM 解释/回答一下
rtCell 真正的图形模式多窗口 - 用 Borland C 编写,具有下列功能:
1. 完善而精巧的多视口裁剪和消隐处理,与实时微内核rtCell紧密结合;
2. 真正的事件(或消息)驱动的多窗口技术,且支持顶层窗口和透明窗口;
3. 当前支持Label、Edit、Botton、Slider、Listbox、TreeView和Checkbox控件,其中的
Edit控件支持剪切、复制和粘贴(ctrl+x,ctrl+c,ctrl+v);
4. 支持窗口的平移、缩放,和窗口系统按钮,及窗口和控件的过程回调;
5. 内存需求小(不到64K),窗口和控件所耗内存很小(全部采用直接读写显存技术,没有内存设备),
因此实用性强,包括rtCell、鼠标、键盘及图形驱动,在DOS下也仅 100 多 K 字节。
演示方法:解压缩gui_Test.rar,在windows下(双击)执行gui_Test.bat,
或在纯dos下直接执行bc_gui.exe(在windows的dos窗口中无鼠标)。
注意:本演示中由于包含一个说明性位图而使得bc_gui.exe比较大。
下载地址:
http://zhenlove.com.cn/cndos/fileup/files/bc_gui.rar
http://zhenlove.com.cn/cndos/fileup/files/bc_gui.zip
rtCell Real Graphical Mode Multi-Window – Written with Borland C, it has the following functions:
1. Perfect and delicate multi-viewport clipping and culling processing, closely integrated with the real-time microkernel rtCell;
2. True event (or message) driven multi-window technology, and supports top-level windows and transparent windows;
3. Currently supports Label, Edit, Botton, Slider, Listbox, TreeView and Checkbox controls. Among them, the Edit control supports cut, copy and paste (ctrl+x, ctrl+c, ctrl+v);
4. Supports window panning, zooming, and window system buttons, as well as process callbacks for windows and controls;
5. Small memory requirement (less than 64K), the memory consumed by windows and controls is very small (all use direct video memory reading and writing technology, no memory device), so it is highly practical. Including rtCell, mouse, keyboard and graphics driver, it is only more than 100K bytes under DOS.
Demonstration method: Unzip gui_Test.rar, execute gui_Test.bat under Windows (double-click),
Or execute bc_gui.exe directly under pure DOS (no mouse in the DOS window of Windows).
Note: In this demonstration, bc_gui.exe is relatively large because it contains an illustrative bitmap.
Download address:
http://zhenlove.com.cn/cndos/fileup/files/bc_gui.rar
http://zhenlove.com.cn/cndos/fileup/files/bc_gui.zip
|

来自山东,现居沈阳 |
|
2007-1-3 03:19 |
|
|
zqlcch
初级用户
 
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
从演示上看不错啊,楼主怎么不放出开发包呢?让兄弟们用用
要收费的吗?
用过QbWin和WinSail,QbWin太弱,Winsail功能和你的看起来差不多,但它太丑了。。。。。
It looks good from the demo. Why doesn't the owner release the development package? Let brothers use it. Is it chargeable? I've used QbWin and WinSail. QbWin is too weak. Winsail has similar functions to yours, but it's too ugly....
|
|
2007-1-9 00:57 |
|
|
happybasic
中级用户
  
积分 298
发帖 118
注册 2006-3-1
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
Originally posted by zqlcch at 2007-1-9 00:57:
从演示上看不错啊,楼主怎么不放出开发包呢?让兄弟们用用
要收费的吗?
用过QbWin和WinSail,QbWin太弱,Winsail功能和你的看起来差不多,但它太丑了 ...
QBWIN太弱... 想必这位兄弟一定是高手了,可否做一个更强一的出来
让所有的QB爱好者们爱惠一下,包括偶...
Originally posted by zqlcch at 2007-1-9 00:57:
It looks good from the demo. Why doesn't the owner release the development package? Let brothers try it.
Is it for sale?
I've used QbWin and WinSail. QbWin is too weak. Winsail has similar functions to yours, but it's too ugly...
QBWIN is too weak... I'm sure this brother must be a master. Can you make a stronger one?
Let all QB enthusiasts love it, including me...
|

欢迎光临happyBASIC小站:http://yxbasic.51.net |
|
2007-1-9 02:01 |
|
|
zqlcch
初级用户
 
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
QbWin的缺点是要写C盘,会产生~Qbwin.0等4个文件,每个38K,就是640x480x16色环境下显存四个位面的镜像文件,不能在只读的环境中使用,比如硬盘上所有的分区都是NTFS的情况,当初很认真地学习一段时间的QBWin,也做了一些基于QbWin的程序,后面就放弃了。另外Qbasic的数据段只有64k,建立大一些的数组就比较麻烦了。调用XMS也没有现成的包可以用,如果真要用XMS写还不如用C了,大量现成的包可以使用,以上这些都算是Qb无法解决的缺点了吧,除非谁能再写一个QB的编译器。
建议三楼的去用一下WinSail,基于BC的GUI库,编程方便多了。
象“想必这位兄弟一定是高手了,可否做一个更强一的出来”这样赌气伤感情的话就不要再说了,就算是一个基于应用层面的编程者(比如我)对语言的喜好也不能被自己的感情所左右,编程自然是哪个好用就用哪个,提高生产率何乐而不为,某种语言的优点自然要发杨光大,但缺点也要老老实实承认。。。。
Last edited by zqlcch on 2007-1-9 at 05:45 AM ]
The disadvantages of QbWin are that it needs to write to the C drive and will generate 4 files like ~Qbwin.0, each 38K, which are mirror files of the four planes of video memory in a 640x480x16 color environment and cannot be used in a read-only environment, such as when all partitions on the hard drive are NTFS. I seriously studied QbWin for a period of time and also made some programs based on QbWin, but then I gave it up. Also, the data segment of Qbasic is only 64k, so it is relatively troublesome to create larger arrays. There is no ready-made package to call XMS. If you really want to write with XMS, it is better to use C, as there are a large number of ready-made packages available. All the above can be regarded as the disadvantages that Qb cannot solve, unless someone can write another QB compiler.
It is suggested that the third-floor user go and use WinSail, a GUI library based on BC, which is much more convenient for programming.
Don't say words like "I'm afraid this brother must be an expert. Can you make a stronger one?" which are赌气 and hurt feelings. Even for an application-level programmer (like me), the preference for a language cannot be influenced by one's own emotions. Naturally, in programming, one uses whichever is more useful, and it's good to increase productivity. The advantages of a certain language should naturally be carried forward, but the disadvantages should also be honestly admitted...
Last edited by zqlcch on 2007-1-9 at 05:45 AM ]
|
|
2007-1-9 05:42 |
|
|
happybasic
中级用户
  
积分 298
发帖 118
注册 2006-3-1
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
呵呵,楼上兄弟莫介意。。。我是真希望有一个更好的QB开发库, 因为QBWIN停止开发了,而且作者现在一直很忙... Hoker一直建议他开源,目前尚无消息。。。
所以,我在我的小站已经在开始自已做的QBCH开发库就是想取代bas原来的那个showfnt开发库(DOS字符界面的中文库),但GUI界面的目前还未敢试 ....
兄弟有任何意见,关于QB or QBWIN的尽管提,,当然最好的是改进意见,或开发意见。。。。
Hehe, don't mind the brother upstairs... I really hope there is a better QB development library, because QBWIN has stopped development, and the author has been very busy now... Hoker has been suggesting that he open source, but there is no news yet...
So, I have started making my own QBCH development library on my small site, which is to replace the original bas showfnt development library (Chinese library for DOS character interface), but I haven't dared to try the GUI interface yet....
Brother, if you have any opinions on QB or QBWIN, feel free to mention them. Of course, the best are improvement opinions or development opinions...
|

欢迎光临happyBASIC小站:http://yxbasic.51.net |
|
2007-1-9 07:05 |
|
|
zqlcch
初级用户
 
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
真的吗?QbWin的窗口风格和界面我一直都非常喜欢,很漂亮很舒服,就是那该死的临时文件受不了,应该是用bload和bsave函数产生的吧,能把这个改了我就满足了。
Really? QbWin's window style and interface I've always liked very much, very beautiful and comfortable, it's just that damned temporary files can't stand it, should be generated by the bload and bsave functions, can change this I will be satisfied.
|
|
2007-1-9 07:36 |
|
|
happybasic
中级用户
  
积分 298
发帖 118
注册 2006-3-1
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
但目前还缺少不少知识,最好是bas能开源,QBWIN还是有很多地方可以优化的...
我正在研究一个问题就是在程式中抓自已的文件名,但还没做好,不知兄弟会不会,会的话,就指点一二,这个主要用于捆绑字库
But there are still many missing knowledge points. It's best if the BAS is open-sourced. There are still many places where QBWIN can be optimized...
I'm researching a problem, which is to capture my own file name in the program, but I haven't done it well. I don't know if the brother will. If he does, please give me some pointers. This is mainly used for bundling font libraries.
|

欢迎光临happyBASIC小站:http://yxbasic.51.net |
|
2007-1-9 08:08 |
|
|
zqlcch
初级用户
 
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
运行程序时,第0个参数就是自身的文件名。
在Pascal中函数ParamStr(0),返回的就是自身的文件名。。。
在Qb中找到相对应的函数就OK了。
现在居然连Qb都下不到了。。。。汗
When running a program, the 0th parameter is the filename of itself. In Pascal, the function ParamStr(0) returns the filename of itself... Just find the corresponding function in Qb. Now it's really hard to even download Qb... Sweat
|
|
2007-1-9 09:57 |
|
|
happybasic
中级用户
  
积分 298
发帖 118
注册 2006-3-1
状态 离线
|
|
2007-1-9 12:07 |
|
|
xugaohui
高级用户
   
积分 774
发帖 293
注册 2003-4-16 来自 湖北仙桃
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
Originally posted by happybasic at 2007-1-9 02:01 AM:
QBWIN太弱... 想必这位兄弟一定是高手了,可否做一个更强一的出来
让所有的QB爱好者们爱惠一下,包括偶...
qbwin是不错,但遗留的问题太多了,根本不打算用这个。在vmware正准备用qbwin,发现它显示窗体十分慢。鼠标移动一下都不容易。还有很多人说qbwin 编写的程序在部分液晶显示器上无法显示,显示器上只显示出刷新率超出范围。
qbwin的msgbox正好与vbdos冲突。这些问题作者都不打算去解决它。
Last edited by xugaohui on 2007-1-10 at 04:44 AM ]
Originally posted by happybasic at 2007-1-9 02:01 AM:
QBWIN is too weak... I must suppose that this brother must be a master. Can you make a stronger one come out
Let all QB enthusiasts love and benefit, including me...
qbwin is good, but there are too many remaining problems, and I don't plan to use this at all. I was just preparing to use qbwin in vmware, and found that it displays the form very slowly. It's not easy to move the mouse. There are also many people saying that the program written by qbwin cannot be displayed on some LCD monitors, and only the refresh rate is out of range on the monitor.
The msgbox of qbwin just conflicts with vbdos. The author doesn't plan to solve these problems.
Last edited by xugaohui on 2007-1-10 at 04:44 AM ]
|

下载
09年7月7日 更新
感谢网友 囧HQY 提供空间 |
|
2007-1-10 00:48 |
|
|
happybasic
中级用户
  
积分 298
发帖 118
注册 2006-3-1
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
1.窗体刷新速度是有些慢,不过不能用倒是没听说过...
ps: 可以先加载smartdrv.exe后速度就快多了
2.与VBDOS的MSGBOX冲突,QBWIN是for QBX 7.1的, 根本没有打算for VBDOS
(虽然可以兼容), VBDOS只是诱导大家去用VB的饵,不想用,呵呵,而且界面也太丑了
1. The form refreshing speed is a bit slow, but I haven't heard that it can't be used...
ps: You can first load smartdrv.exe and then the speed will be much faster
2. Conflicts with the MSGBOX of VBDOS. QBWIN is for QBX 7.1 and has no intention of being for VBDOS (although it can be compatible). VBDOS is just a bait to induce everyone to use VB. I don't want to use it, heh heh, and the interface is too ugly
|

欢迎光临happyBASIC小站:http://yxbasic.51.net |
|
2007-1-10 01:03 |
|
|
zqlcch
初级用户
 
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
查找DOS中断编程相关资料,没有找到与此有关的中断服务,程序的PSP段中也只有参数而没有自身文件名,无法。。。
Looking for DOS interrupt programming related materials, no relevant interrupt services were found, and there is only parameter in the PSP segment of the program without its own file name, unable to...
|
|
2007-1-10 06:41 |
|
|
happybasic
中级用户
  
积分 298
发帖 118
注册 2006-3-1
状态 离线
|
『第 13 楼』:
使用 LLM 解释/回答一下
查到资料说PSP段 2Ch开始,查找0010之后就是文件名称,可是在QB中不知怎
么实现, 我原来弄过一段汇编程序是OK的,
代码如下,你看能不能用QB实现它:
cseg segment
assume cs:cseg,ds:cseg
org 100h
start: mov si,2ch
lodsw
mov ds,ax
mov si,0
push cs ;exe格式需要这两句
pop es ;com格式 cs==ds==es 可以不要
mov di, offset buf
cld
loc_1: lodsb
cmp al,0 ;0
jnz loc_1
lodsb
cmp al,0 ;0
jnz loc_1
lodsb
cmp al,1 ;1
jnz loc_1
lodsb ;0
loc_2:lodsb ;文件名开始
cmp al,0
jz disp_1
stosb
jmp loc_2
disp_1:push cs
pop ds
mov dx, offset buf
mov ah,9
int 21h ;显示文件名
mov ah,4ch
int 21h ;返回DOS
buf db 256 dup('$')
cseg ends
end start
I found information saying that starting from PSP segment 2Ch, after finding 0010, it is the file name, but I don't know how to implement it in QB. I originally had a segment of assembly code that was OK. The code is as follows, see if it can be implemented in QB:
cseg segment
assume cs:cseg,ds:cseg
org 100h
start: mov si,2ch
lodsw
mov ds,ax
mov si,0
push cs ;exe format needs these two sentences
pop es ;com format cs==ds==es can be omitted
mov di, offset buf
cld
loc_1: lodsb
cmp al,0 ;0
jnz loc_1
lodsb
cmp al,0 ;0
jnz loc_1
lodsb
cmp al,1 ;1
jnz loc_1
lodsb ;0
loc_2:lodsb ;file name starts
cmp al,0
jz disp_1
stosb
jmp loc_2
disp_1:push cs
pop ds
mov dx, offset buf
mov ah,9
int 21h ;display file name
mov ah,4ch
int 21h ;return to DOS
buf db 256 dup('$')
cseg ends
end start
|

欢迎光临happyBASIC小站:http://yxbasic.51.net |
|
2007-1-10 09:44 |
|
|
zqlcch
初级用户
 
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
有资料就容易
先运行qbx /L qbx.qlb载入qbx库,如果你没有在QB中设置路径就要在/L后加路径了
代码如下:
//先调用DOS中断21的子功能62来取PSP的地址
'$INCLUDE: 'e:\programs\qb71\src\qbx.bi'
CLS
DIM s AS RegType
s.ax = &H6200
CALL Interrupt(&H21, s, s) //调用中断
//定义段地址
DEF SEG = s.bx
//从2C取两个字节,这两个字节就是环境变量的段地址
s1 = PEEK(&H2C)
PRINT s1
s2 = PEEK(&H2D)
PRINT s2
//这里计算段地址
DEF SEG = s2 * 16 * 16 + s1
//这里取环境变量的内容,自身的文件名是以01,00打头的,查找以01,00找头,后面的一串以0结尾的字符串就是自己的文件,自己补些代码吧
//这里我偷懒了,把全部都取出来了,自己修改吧,要喝酒去了
a$ = ""
FOR aa = 0 TO 1855
a$ = a$ + CHR$(PEEK(aa))
NEXT
PRINT a$
汗,QB还是先天不足,操作起来实在麻烦,在C或PASCAL中一个指针就搞定了。。。。。。
Last edited by zqlcch on 2007-1-10 at 10:40 AM ]
It's easy with materials.
First run qbx /L qbx.qlb to load the qbx library. If you haven't set the path in QB, you need to add the path after /L.
The code is as follows:
//First call the sub-function 62 of DOS interrupt 21 to get the address of PSP
'$INCLUDE: 'e:\programs\qb71\src\qbx.bi'
CLS
DIM s AS RegType
s.ax = &H6200
CALL Interrupt(&H21, s, s) //Call interrupt
//Define segment address
DEF SEG = s.bx
//Take two bytes from 2C, these two bytes are the segment address of the environment variable
s1 = PEEK(&H2C)
PRINT s1
s2 = PEEK(&H2D)
PRINT s2
//Calculate the segment address here
DEF SEG = s2 * 16 * 16 + s1
//Take the content of the environment variable here. The filename of itself starts with 01,00. Find the string starting with 01,00 and ending with 0 behind, which is your own file. Make up some code by yourself.
//I was lazy here and took all out. Modify it by yourself. I'm going to drink.
a$ = ""
FOR aa = 0 TO 1855
a$ = a$ + CHR$(PEEK(aa))
NEXT
PRINT a$
Sweat, QB is still inherently insufficient, and it's really troublesome to operate. In C or PASCAL, a pointer can be done in one go.......
Last edited by zqlcch on 2007-1-10 at 10:40 AM ]
|
|
2007-1-10 10:38 |
|
|
happybasic
中级用户
  
积分 298
发帖 118
注册 2006-3-1
状态 离线
|
|
2007-1-11 22:45 |
|