📄 tcmouse.c
字号:
#include <stdio.h>
#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#define TRUE 1
#define FALSE 0
#define LEFT 1
#define RIGHT 2
void InitGra();
void Cross();
int InitMouse();
void ShowMouse();
void HideMouse();
void ReadMouse(int *f, int *x, int *y);
void ErrMsg();
void Quit();
int main()
{
int Button, x, y;
InitGra(); /* 图形初始化 */
if (! InitMouse()) ErrMsg(); /* 如果没安装鼠标, 则退出 */
ShowMouse();
while (Button != LEFT) /*当没有点击左键时一直循环*/
{
ReadMouse(&Button, &x, &y); /*读取鼠标状态*/
printf("\r%3d,%3d",x,y); /*顶格输出鼠标的坐标*/
}
delay(300);
Cross(); /*点击左键后转为十字光标模式*/
Quit();
return 0;
}
void InitGra() /* 初始化屏幕为图形方式 */
{
int GarphDriver, GarphMode;
GarphDriver = DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&GarphDriver, &GarphMode, "..\\bgi");
}
void Cross()
{
int Button, Oldx, Oldy;
int x, y, First = TRUE;
Button = Oldx = Oldy = 0;
setwritemode(XOR_PUT); /* 设置向屏幕写方式: 异或 */
HideMouse(); /* 隐去鼠标器光标 */
setcolor(15);
while (Button != LEFT) /* 等待鼠标器的左键被按下 */
{
ReadMouse(&Button, &x, &y);
if (Oldx != x || Oldy != y) /* 如果鼠标有移动 */
{
if (! First) /* 如果不是第一次画出是十字光标 */
{
line(Oldx, 0, Oldx, 479); /* 擦去原位置的十字光标 */
line(0, Oldy, 639, Oldy);
}
line(x, 0, x, 479); /* 新位置重画十字光标 */
line(0, y, 639, y);
Oldx = x; /* 保存新位置的坐标值 */
Oldy = y;
First = FALSE;
}
printf("\r%3d,%3d",x,y);
}
delay(300); /* 延时300毫秒, 以虑掉多余的按键信号 */
line(x, 0, x, 479); /* 擦掉十字光标 */
line(0, y, 639, y);
setwritemode(COPY_PUT); /* 写方式还原, 即设置为覆盖方式 */
}
void Quit()
{
closegraph();
exit (0);
}
int InitMouse()
{
union REGS Inr, Outr;
Inr.x.ax = 0;
int86(0x33, &Inr, &Outr);
return Outr.x.ax;
}
void ShowMouse()
{
union REGS Inr, Outr;
Inr.x.ax = 1;
int86(0x33, &Inr, &Inr);
}
void HideMouse()
{
union REGS Inr, Outr;
Inr.x.ax = 2;
int86(0x33, &Inr, &Inr);
}
/*
读取鼠标的按键信息并返回按键时光标的屏幕坐标.
f: 按键标志,
x, y: 返回按键时光标的屏幕坐标.
*/
void ReadMouse(int *f, int *x, int *y)
{
union REGS Inr, Outr;
Inr.x.ax = 3;
int86(0x33, &Inr, &Outr);
*f = Outr.x.bx;
*x = Outr.x.cx;
*y = Outr.x.dx;
}
void ErrMsg()
{
printf("No Mouse Error!");
getch();
Quit();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -