China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-08-01 10:08
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » Personally written GUI graphical interface software View 5,204 Replies 28
Original Poster Posted 2007-01-03 03:19 ·  中国 辽宁 沈阳 移动
高级用户
★★
Credits 739
Posts 111
Joined 2004-11-30 00:00
21-year member
UID 34209
Gender Male
From 辽宁沈阳
Status Offline
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
来自山东,现居沈阳
Floor 2 Posted 2007-01-09 00:57 ·  中国 福建 宁德 电信
初级用户
★★
Credits 178
Posts 85
Joined 2006-07-06 15:25
20-year member
UID 58125
Status Offline
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....
Floor 3 Posted 2007-01-09 02:01 ·  中国 江苏 苏州 电信
中级用户
★★
Credits 298
Posts 118
Joined 2006-03-01 13:30
20-year member
UID 51161
Status Offline
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
Floor 4 Posted 2007-01-09 05:42 ·  中国 福建 宁德 电信
初级用户
★★
Credits 178
Posts 85
Joined 2006-07-06 15:25
20-year member
UID 58125
Status Offline
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 ]
Floor 5 Posted 2007-01-09 07:05 ·  中国 江苏 苏州 电信
中级用户
★★
Credits 298
Posts 118
Joined 2006-03-01 13:30
20-year member
UID 51161
Status Offline
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
Floor 6 Posted 2007-01-09 07:36 ·  中国 天津 电信
初级用户
★★
Credits 178
Posts 85
Joined 2006-07-06 15:25
20-year member
UID 58125
Status Offline
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.
Floor 7 Posted 2007-01-09 08:08 ·  中国 江苏 苏州 电信
中级用户
★★
Credits 298
Posts 118
Joined 2006-03-01 13:30
20-year member
UID 51161
Status Offline
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
Floor 8 Posted 2007-01-09 09:57 ·  中国 福建 宁德 电信
初级用户
★★
Credits 178
Posts 85
Joined 2006-07-06 15:25
20-year member
UID 58125
Status Offline
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
Floor 9 Posted 2007-01-09 12:07 ·  中国 江苏 苏州 中移铁通
中级用户
★★
Credits 298
Posts 118
Joined 2006-03-01 13:30
20-year member
UID 51161
Status Offline
In C, it's also the 0th parameter, but in QB, the parameter is COMMAND$, which is a string, not an array....

Download address of QB:
http://vb.lihuasoft.net/showdown.php?id=419

Help to solve it, thanks!
欢迎光临happyBASIC小站:http://yxbasic.51.net
Floor 10 Posted 2007-01-10 00:48 ·  中国 广东 揭阳 电信
高级用户
★★
Credits 774
Posts 293
Joined 2003-04-16 00:00
23-year member
UID 1579
Gender Male
From 湖北仙桃
Status Offline
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 提供空间
Floor 11 Posted 2007-01-10 01:03 ·  中国 江苏 苏州 电信
中级用户
★★
Credits 298
Posts 118
Joined 2006-03-01 13:30
20-year member
UID 51161
Status Offline
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
Floor 12 Posted 2007-01-10 06:41 ·  中国 福建 宁德 电信
初级用户
★★
Credits 178
Posts 85
Joined 2006-07-06 15:25
20-year member
UID 58125
Status Offline
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...
Floor 13 Posted 2007-01-10 09:44 ·  中国 江苏 苏州 中移铁通
中级用户
★★
Credits 298
Posts 118
Joined 2006-03-01 13:30
20-year member
UID 51161
Status Offline
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
Floor 14 Posted 2007-01-10 10:38 ·  中国 福建 宁德 电信
初级用户
★★
Credits 178
Posts 85
Joined 2006-07-06 15:25
20-year member
UID 58125
Status Offline
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 ]
Floor 15 Posted 2007-01-11 22:45 ·  中国 江苏 苏州 联通
中级用户
★★
Credits 298
Posts 118
Joined 2006-03-01 13:30
20-year member
UID 51161
Status Offline
It's done. Go and have a look! Please give more feedback!
http://yxbasic.51.net/library/qbch.htm
欢迎光临happyBASIC小站:http://yxbasic.51.net
Forum Jump: