中国DOS联盟论坛

China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --
Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
Guest | Log in | Register | Members | Search | China DOS Union
中国DOS联盟论坛
The time now is 2026-10-31 13:16
47,815 topics / 349,930 posts / today 0 new / 48,290 members
DOS开发编程 & 发展交流 (开发室) » Personally written GUI graphical interface software
Printable Version  5,888 / 28
Floor1 taowentao Posted 2007-01-03 03:19
高级用户 Posts 111 Credits 739 From 辽宁沈阳
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
Floor2 zqlcch Posted 2007-01-09 00:57
初级用户 Posts 85 Credits 178
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....
Floor3 happybasic Posted 2007-01-09 02:01
中级用户 Posts 118 Credits 298
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...
Floor4 zqlcch Posted 2007-01-09 05:42
初级用户 Posts 85 Credits 178
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 ]
Floor5 happybasic Posted 2007-01-09 07:05
中级用户 Posts 118 Credits 298
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...
Floor6 zqlcch Posted 2007-01-09 07:36
初级用户 Posts 85 Credits 178
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.
Floor7 happybasic Posted 2007-01-09 08:08
中级用户 Posts 118 Credits 298
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.
Floor8 zqlcch Posted 2007-01-09 09:57
初级用户 Posts 85 Credits 178
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
Floor9 happybasic Posted 2007-01-09 12:07
中级用户 Posts 118 Credits 298
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!
Floor10 xugaohui Posted 2007-01-10 00:48
高级用户 Posts 293 Credits 774 From 湖北仙桃
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 ]
Floor11 happybasic Posted 2007-01-10 01:03
中级用户 Posts 118 Credits 298
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
Floor12 zqlcch Posted 2007-01-10 06:41
初级用户 Posts 85 Credits 178
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...
Floor13 happybasic Posted 2007-01-10 09:44
中级用户 Posts 118 Credits 298
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
Floor14 zqlcch Posted 2007-01-10 10:38
初级用户 Posts 85 Credits 178
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 ]
Floor15 happybasic Posted 2007-01-11 22:45
中级用户 Posts 118 Credits 298
It's done. Go and have a look! Please give more feedback!
http://yxbasic.51.net/library/qbch.htm
1 2  Next
[ Contact the Union admin team - 中国DOS联盟 - Standard version ]
Sponsored by ifanr Inc | © 2001–2023