⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8-1.c

📁 《C程序员成长攻略》-黎陡-源代码,书中所有源码
💻 C
字号:
#include"graphics.h"
#include"dos.h"
/*--------显示鼠标光标---------*/
void ShowMouse()
{
	union REGS inregs,outregs;      
	inregs.x.ax=1;                  /*-------赋值为1,以便调用显示光标功能-------*/
	int86(0x33,&inregs,&outregs);   /*-------调用0x33号中断中的显示光标功能------*/
}
/*-------获取鼠标位置及按键状态信息-----------*/
void GetMouseState(int *state,int *x,int *y)
{ 
	union REGS inregs,outregs;
	inregs.x.ax=3;                 /*-------赋值为1,以便调用显示光标功能-------*/
	int86(0x33,&inregs,&outregs);
	*state=outregs.x.bx;           /*----获得鼠标按键状态-----*/
	*x=outregs.x.cx;               /*----获得鼠标光标横坐标---*/
	*y=outregs.x.dx;               /*----获得鼠标光标纵坐标---*/
}
/*--------画"十"字型的鼠标光标------*/
void DrawMouse(int x,int y,int color)
{
	setcolor(color);
	line(x-5,y,x+5,y);
	line(x,y-5,x,y+5);
}
main()
{ 
	int i,j;
	int gd=DETECT,gm;
	int MouseState,x,y,new_x,new_y,old_x,old_y;
	char *str;
	initgraph(&gd,&gm,"c:\tc\tc");
	while(MouseState!=0x0002)   /*当鼠标状态为按下右键时则退出循环*/
	{
		ShowMouse();       /*------显示鼠标-------*/
		GetMouseState(&MouseState,&x,&y);  /*--------获取鼠标状态信息-----------*/
		printf("\r[%3d,%3d]",x,y);
		/*在屏幕顶行显示鼠标坐标。控制符"\r"表示总在顶行输出*/
		switch(MouseState)
		{
		case 0x0001:       /*-------当鼠标左键按下时--------*/
			old_x=x; 
			old_y=y;  /*-----初使时定义旧坐标为鼠标左键按下时的坐标*/
			DrawMouse(old_x,old_y,15); /*---画"十"字型鼠标光标-----*/
			while(MouseState!=0x0000)   /*-----如果鼠标左键释放则退出循环-------*/
			{
				GetMouseState(&MouseState,&new_x,&new_y);
				/*---重新读取鼠标状态,并将按键状态赋给整型变量MouseState,
				而当前鼠标坐标位置则赋给(new_x,new_y)-----*/
				printf("\r[%3d,%3d]",new_x,new_y); /*---输出新的鼠标位置---*/ 
				if(new_x!=old_x || new_y!=old_y)  /*---如果当前鼠标坐标发生改变---*/
				{
					setcolor(0);
					DrawMouse(old_x,old_y,0);
					/*用背景色将原位置的"十"字型鼠标光标擦去*/
					line(x,y,old_x,old_y);    /*用背景色将原直线擦去*/
					setcolor(15);             /*设置画线颜色为15*/
					line(x,y,new_x,new_y);
					/*从鼠标按下位置到新的当前鼠标位置画一条直线*/
					DrawMouse(new_x,new_y,15);
					/*在新的当前鼠标位置画"十"字型鼠标光标*/
					old_x=new_x; 
					old_y=new_y; /*将新的当前鼠标位置作为旧的鼠标位置*/
				}
			}
			DrawMouse(old_x,old_y,0); /*画线后将"十"字型鼠标光标擦去*/
			break;
		default:
			break;
		}
	}
}

⌨️ 快捷键说明

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