论坛: 编程破解 标题: 请问这个C语言窗口程序如何做? 复制本贴地址    
作者: lzg2001 [lzg2001]    论坛用户   登录
#include "conio.h"
#include "dos.h"
#include "bios.h"
#define  Key_ESC  1
#define  Key_TAB  15
#define  Key_E    18
int  key();
void  display(char ch);
void  size_cursor(int start,int end);
void  localcursor(int x,int y);
main()
{ int ky,x,y,flag=0;
  char ch;
  textmode(C80);
  window(1,1,40,25);
  textcolor(WHITE);
  textbackground(BLUE);
  clrscr();
  window(40,1,80,25);
  textcolor(RED);
  textbackground(GREEN);
  clrscr();
  localcursor(1,1);
  size_cursor(0,2);
  localcursor(40,1);
  size_cursor(0,2);
  do
  { ky=key();
    switch(ky)
    { case Key_TAB:
      {if(flag==0)
{x=wherex();y=wherey();localcursor(x,y);flag=1;ch=getch();display(ch);break;}
      else if(flag==1)
{x=wherex();y=wherey();localcursor(x,y);flag=0;ch=getch();display(ch);break;}}
      case Key_E:
      {ky=Key_ESC;break;}
      default:
      {ch=getch();display(ch);}
    }
  }while(ky!=Key_ESC);
  }
int key()/*获取键盘扫描码*/
{union REGS rg;
  rg.h.ah=0;
  int86(0x16,&rg,&rg);
  return rg.h.ah;
  }
void size_cursor(int start,int end)/*设置光标*/
{union  REGS r;
  r.h.ah=1;
  r.h.ch=start;
  r.h.cl=end;
  int86(0x10,&r,&r);
  }
void display(char ch)/*显示字符*/
{union REGS r;
  r.h.ah=9;
  r.h.al=ch;
  int86(0x1c,&r,&r);
  }
void localcursor(int x,int y)/*置光标位置*/
{union REGS r;
r.h.ah=2;
r.h.ah=y;
r.h.ah=x;
int86(0x10,&r,&r);
}
请问这道题如何做?
题是这样的:编制一个程序,将屏幕垂直平分成两个窗口左边窗口为蓝色背景,白色前景,右边窗口为绿色背景,红色前景。两个窗口都设计为文本输入,即在窗口中可以输入文字,在窗口屏幕中显示出来。使用Tab键在左右两个窗口中切换,每个窗口都有光标,活动窗口光标进行闪烁。
    我只能完成它的背景设置,而后面的我无法实现。请各位高手指教!!谢谢了!

地主 发表时间: 12/15 22:18

回复: 286 [unique]   版主   登录
程序没仔细看,不过,两个窗口之间输入数据,所以要记录一个当前光标位置的变量。否则的话换完窗口再换回来时,就记不住该从哪继续了。


B1层 发表时间: 12/16 09:20

回复: wskli [wskli]      登录
老大能加我QQ嘛,我想问你一些关于C的问题!

B2层 发表时间: 12/16 12:55

回复: lzg2001 [lzg2001]   论坛用户   登录
在程序中我设有这样的变量呀,让我困惑的是我无法在两个窗口间切换,而且输入数据时也有毛病;请问286你能不能说得具体一些?
上面那位你可以给我发贴呀!如果我懂的话,我会回答你的问题的。

B3层 发表时间: 12/17 18:03

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号