|
![]() | 作者: 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号