window.dmo

来自「汇编源代码大全2」· DMO 代码 · 共 188 行

DMO
188
字号
#include <jaz.h>
#include <keys.h>
#include <jzscreen.h>
#include <gscreen.h>

char *wtext1[] = {
"Welcome to the JazSoft \"C\" Library",
"This demo illustrates the use of some",
"of the screen and window routines.",
"If you are interested in obtaining",
"Source code and the libraries to over",
"125 functions, Contact:",
"JazSoft Software (Jack A. Zucker)",
"301-794-5950  301-794-8763  CIS:75766,1336",
"Press any key to continue...",
""
};

char *wtext2[] = {
"The first example shows how to overlay",
"a window with another one. The first window",
"is still there. It's just hiding underneath",
"the second one!",
"Here, I'll show you...",
""
};

char *wtext3[] = {
"The second example shows",
"how to move a window to",
"another part of the screen",
"Use the arrow keys and then",
"Press <Enter> when done.",
""
};

char *wtext4[] = {
"We can even change",
"the color of the window.",
"It's as easy as:",
""
};

char *wnum[] = {
"ONE...",
"TWO...",
"THREE...",
""
};

main()
{
  TWINDOW *wptr[10];		/* pointer to window structure */
  TWINDOW *originalscreen;
  int w,wrow,wcol;
  int wch,wscan;

  originalscreen = jzappend(&g_header,0,0,0,25,80,0xff);

  #if ! DEBUG
    jzlogo();
  #endif

  jzclswnd(0xff);

  wptr[0] = jzopnwnd(0,5,25,45,11,WHITE,BLUE);

  showtext(wtext1);

  wptr[1] = jzcpywnd(wptr[0],1);

  getch();

  wptr[2] = jzopnwnd(2,10,32,45,7,BLACK,RED);

  showtext(wtext2);

  wptr[3] = jzcpywnd(wptr[2],3);

  for (w = 0 ; w < 5 ; w ++) {
    if (w & 1) jzrstwnd(wptr[1]);
    else jzrstwnd(wptr[3]);
    jzdelay(18L);
  }

  wptr[4] = jzopnwnd(4,12,40,30,7,BLUE,CYAN);

  showtext(wtext3);

  wptr[5] = jzcpywnd(wptr[4],5);

  wcol = 40;			     /* init column */
  wrow = 12;			     /* init row    */

  do {
    if (wch = jzinkey(&wscan)) {     /* not a special char */
      if (wch == 13) break;	     /* exit loop on enter key */
    }
    else
      switch (wscan) {
	case UARR : if (wrow > 0) {
		      wrow --;
		      jzrstwnd(wptr[4]);  /* restore previous window */
		      wptr[4]->row1--;
		      wptr[4]->row2--;
		      jzsavwnd(wptr[4]);
		      jzmovwnd(wptr[5],wrow,wcol);
		    }
		    break;
	case DARR : if (wrow < 17) {
		      wrow ++;
		      jzrstwnd(wptr[4]);  /* restore previous window */
		      wptr[4]->row1++;
		      wptr[4]->row2++;
		      jzsavwnd(wptr[4]);
		      jzmovwnd(wptr[5],wrow,wcol);
		    }
		    break;
	case LARR : if (wcol > 0) {
		      wcol --;
		      jzrstwnd(wptr[4]);  /* restore previous window */
		      wptr[4]->col1--;
		      wptr[4]->col2--;
		      jzsavwnd(wptr[4]);
		      jzmovwnd(wptr[5],wrow,wcol);
		     }
		    break;
	case RARR : if (wcol < 50) {
		      wcol ++;
		      jzrstwnd(wptr[4]);  /* restore previous window */
		      wptr[4]->col1++;
		      wptr[4]->col2++;
		      jzsavwnd(wptr[4]);
		      jzmovwnd(wptr[5],wrow,wcol);
		    }
		    break;
      }
  } while (-1);

  wptr[6] = jzopnwnd(6,0,0,26,8,BLACK,MAGENTA);

  showtext(wtext4);

  wptr[7] = jzcpywnd(wptr[6],7);


  for (w = 0; *wnum[w] ; w ++) {
    locate(w+3,0);
    wprintf(wnum[w]);
    jzclrwnd(wptr[7],(w << 5) + 1);
    jzdelay(18L);
  }

  for (w = 6 ; w >= 0 ; w -= 2) {
    jzdelay(18L);
    jzclswnd(w);
  }

  jzloccur(23,0);

}

showtext(fstr)
char **fstr;
{
  int w;

  for (w = 0 ; *fstr[w] ; w ++) {
    locate(w,0);
    clickwrite(fstr[w]);
  }
}

clickwrite(fstr)
char *fstr;
{

  while (*fstr) {
    wprintf("%c",*fstr++);
    #if ! DEBUG
      soundon(20000);
      jzdelay(1L);
      soundoff();
    #endif
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?