home *** CD-ROM | disk | FTP | other *** search
- /* C_WDEMO.C
-
- C Windowing Toolbox demonstration program compiled as C_WDEMO.EXE
-
- */
-
- #include <c_wdef.h>
-
-
- main()
-
- {
- int w1, w2, w3, w4;
- int i, c;
- char str[10];
- char *strptr;
-
- /* variables used so this demo runs correctly on either */
- /* mono or color screen */
- char w1bgc, w2bgc, w3bgc, w4bgc; /* window background */
- char w1bfgc, w2bfgc, w3bfgc, w4bfgc; /* border foreground */
- char w1bbgc, w2bbgc, w3bbgc, w4bbgc; /* border background */
- char w1tfg, w2tfg, w3tfg, w4tfg; /* text foreground */
- char gsfgc; /* color of text input by w_getstr () */
-
- /* Look at byte located at 40:49 in memory. If it */
- /* equals 2 or 3, then a color card is being used;*/
- /* if it equals 7, a monochrome card is installed */
- peek (0x40, 0x49, &str[0], 1);
- if ((str[0] == 2) || (str[0] == 3)) {
- /* window background, border foreground, border background */
- w1bgc = BG_RED; w1bfgc = FG_BLUE; w1bbgc = BG_BLUE;
- w2bgc = BG_GREEN; w2bfgc = FG_LTGREEN; w2bbgc = BG_GREEN;
- w3bgc = BG_CYAN; w3bfgc = FG_MAGENTA; w3bbgc = BG_MAGENTA;
- w4bgc = BG_GREEN; w4bfgc = FG_BROWN; w4bbgc = BG_BROWN;
- /* window text foreground */
- w1tfg = FG_WHITE;
- w2tfg = FG_LTGREEN;
- w3tfg = FG_RED;
- w4tfg = FG_BLACK;
- gsfgc = FG_YELLOW;
- }
- else {
- /* plain white on black */
- w1bgc = w1bbgc = w2bgc = w2bbgc = w3bgc = w3bbgc =
- w4bgc = w4bbgc = NORM;
- w1bfgc = w2bfgc = w3bfgc = w4bfgc = NORM;
- w1tfg = w2tfg = w3tfg = w4tfg = NORM;
- gsfgc = NORM|BRIGHT;
- }
-
- /* always call this function first */
- w_init ();
-
- strptr = str;
- w_bgcolor (BG_BLACK);
- w_fgcolor (FG_BRTWHITE);
- border (10, 5, 55, 6, BLK_LN);
- w_writexy (27, 7, "C Windowing Toolbox");
- w_fgcolor (FG_WHITE);
- w_writexy (24, 8, "* Demonstration Program *");
- w_writexy (22, 15, "Send $15 for the C source to:");
- w_fgcolor (FG_BRTWHITE);
- w_writexy (26, 17, "Christopher McVicar");
- w_writexy (25, 18, "124 Wellington Heights");
- w_writexy (28, 19, "Avon, CT 06001");
- w_writexy (50, 23, "Press any key to continue");
- keyin ();
-
- /* define 4 windows */
- w1 = w_def (75, 5, BORDER);
- w2 = w_def (60, 20, BORDER);
- w3 = w_def (33, 14, BORDER);
- w4 = w_def (44, 9, BORDER);
-
- w_open (w1, 0, 3, CLR, w1bgc, BLK_LN, w1bfgc, w1bbgc);
- w_fgcolor (FG_WHITE);
- w_bgcolor (w1bgc);
- w_write ("Text can be ");
- w_fgcolor (NORM|BLINK);
- w_write ("blinking, ");
- w_fgcolor (FG_BRTWHITE|BLINK);
- w_write ("blinking bright, ");
- w_fgcolor (FG_BRTWHITE);
- w_write ("or just bright. ");
- w_fgcolor (NORM);
- w_write ("All graphics card colors are also available. ");
- w_write ("Press any key to continue");
- keyin ();
-
- w_open (w2, 20, 2, CLR, w2bgc, DBL_LN, w2bfgc, w2bbgc);
- w_fgcolor (w2tfg);
- w_bgcolor (w2bgc);
- w_write ("The window can scroll up or down...");
- w_writexy (0, 1, "Press any key to continue");
- keyin ();
- for (i = 0; i < 100; i++) {
- w_write ("Scrolling ");
- w_fgcolor (FG_BRTWHITE|BLINK);
- w_write ("UP ");
- w_fgcolor (w2tfg);
- w_write ("in the window ");
- }
- w_scroll (UP, 5);
- w_fgcolor (NORM);
- w_writexy (0, 17, "Press any key to continue");
- keyin ();
-
- w_open (w3, 10, 5, CLR, w3bgc, MXD_1, w3bfgc, w3bbgc);
- w_fgcolor (w3tfg);
- w_bgcolor (w3bgc);
- w_write ("Press any key to continue");
- keyin ();
-
- w_open (w4, 4, 10, CLR, w4bgc, BLK_LN, w4bfgc, w4bbgc);
- w_fgcolor (w4tfg);
- w_bgcolor (w4bgc);
- *(strptr+1) = 0; /* NULL terminated string */
- w_writexy (0, 1, "When a window is open, lines automatically");
- w_writexy (0, 2, "wrap around when the right edge is reached");
- w_writexy (0, 3, "Type in a line of characters or press");
- w_writexy (0, 4, "<Carriage Return>..");
- w_writexy (0, 5, "Press ");
- w_fgcolor (NORM|BRIGHT);
- w_write ("FUNCTION KEY 1 ");
- w_fgcolor (w4tfg);
- w_write ("to quit.");
- w_gotoxy (0, 6);
- while (1) {
- /* 59 is extended code for function key 1 */
- if (((*strptr = keyin ()) == 59) && extend)
- break;
- /* carriage return */
- if (*strptr == 0x0D) {
- w_scroll (UP, 1);
- i = w_getcy ();
- w_gotoxy (0, i);
- }
- else
- w_write (strptr);
- }
- w_close ();
-
- w_fgcolor (w3tfg);
- w_bgcolor (w3bgc);
- strptr = "This is a string";
- w_writexy (0, 0, "Strings can be edited using the");
- w_writexy (0, 1, "usual editing keys. Try editing");
- w_writexy (0, 2, "the following sixteen character");
- w_writexy (0, 3, "string:");
- w_writexy (0, 4, "<Carriage Return> to continue..");
- w_gotoxy (8, 3);
- w_fgcolor (gsfgc);
- w_getstr (strptr, 16);
- w_close ();
-
- keyin ();
- w_close ();
-
- /* reopen prev window */
- w_open (w2, 0, 3, NOCLR, w2bgc, DBL_LN, w2bfgc, w2bbgc);
- w_fgcolor (NORM);
- w_bgcolor (w2bgc);
- w_writexy (0, 16, "Windows can be re-opened at a different location..");
- w_writexy (0, 17, "Press any key to continue");
-
- keyin ();
- w_close ();
-
- keyin ();
- w_close ();
-
- /* 'b_usage' == maximum window buffer storage used
- printf ("\nWindow buffer space used: %d", b_usage);
- */
- }
-