Designing Screen Interfaces in C
The source code, as it appeared in the book, was released under
the name DSIIC.ZIP. The modifications made in this release were done to
make the code compatible with Borland C++.
If you have been using the first release (DSIIC.ZIP), you should note the
- The prototype for the function start is now:
int start(int argc, char *argv);
- The function gotoxy() has been renamed goxy().
Microsoft C users should set the stack size to 4000 to avoid stack
PURPOSE OF THE BOOK:
The book "Designing Screen Interfaces in C" covers the process of
creating a screen/window library. The screen/window library is then used
to create various screen interfaces such as:
-Moving light bar menus.
-Multi-level moving light bar menus.
-Data input screens (with verification).
-List selection (point & shoot /Hot key techniques).
-Context specific help screens.
-Help screen builder.
These routines are coded so that they may easily be modified and
used in your applications.
The full instructions for using this code are found in the book
and will not be duplicated here.
If you have not read the book (shame on you), I have a few
comments to help you get started.
-This code will compile under all memory models of Borland Turbo C 2.0,
and Microsoft QuickC V2.5. Borland C++ users may rename the source code
so it will compile as C++ code (rename *.c to *.cpp)
To specify the compiler you are using, change the first
definition found in "mydef.h" to read:
TURBOC will compile for Turbo C and Borland C++.
QUICKC will compile for Microsoft QuickC and Microsoft C
Note: The default is "#define TURBOC"
-The file "mydef.h" contains all function prototypes and data
structures, and should be included in all your programs which use
the library functions.
(ie: #include "mydef.h" )
-The source code for building the screen/window library are found
in the files having the specification "l_*.c". These files may
be compiled and placed in a library called "mylib.lib " for
linkage with the sample code.
I have precompiled three large model libraries for your immediate use:
MYLIBTC.LIB is for use with Borland Turbo.
MYLIBQC.LIB is for use with Microsoft QuickC (and probably works with
the full Microsoft C compilers)
MYLIBCP.LIB is for Borland C++.
Chose the library appropriate for you, and rename it "MYLIB.LIB".
-The function main() is found in the library module l_main.c. The
sample code, and any code you create, should have the function
start(), which will be called from main(). The function start()
is the entry point for your programs.
-I have not included make or project files for these programs,
due to the number of compilers supported. The following list files
(*.lst) are provided for each sample program. These files contain lists
of the code modules which should be compiled and linked to produce the
BARDEMO.LST Sample moving light bar menu (Lotus 123 style).
BARDEMO2.LST Multilevel moving light bar menu.
DIR-DEMO.LST Directory window demo (point & shoot / Hot key).
HELPDEMO.LST Context specific Help screen.
IN-DEMO.LST Data input screen (with field editing).
LISTDEMO.LST List selection demo (point & shoot / Hot key).
MAKEHELP.LST Editor for creating help screens.
PANEL1.LST Demonstrates nonoverlapping windows (panels).
PD-DEMO.LST Pull-down menu system.
POPDEMO.LST Pop-up menu.
TWO-WAY.LST Demonstrates full/partial menu selection.
WINDEMO.LST Demonstration of window creation/movement.
NOTE: When running all sample menus, select the option "Print",
Which opens up submenus. The other options, except
for "Exit", do not have any real function.
If you have a CGA graphics card which does NOT display
"snow", you may use the 'n' (no snow) parameter to speed
up screen displays.
ie: "windemo n".
Copyright (c) Information.
You are free to use these programs in any software product you
produce as long as:
-You include a credit line in your documentation or software.
-You do not resell the screen/window library as a stand-alone
product. (You may however, charge a small processing fee for
distributing the code.)
Jim Pinson 4/3/1992
CompuServe 73427,2424 or [email protected]