📄 crusor.cpp
字号:
/*******************************************************************************
模 块: 光标模块.
功 能: 隐藏显示移动图形光标用于指示当前位置.
程序员: 雷中南.
版 本: v1.1
时 间: 1999-05-09
*******************************************************************************/
#include <graphics.h>
#include <dos.h>
#include "crusor.h"
//定义一个光标对象.光标定义在可视范围以外.
//使用时将其调回指定位置.
Crusor Cr(-100,0);
//构造函数x,y是光标初始位置.
Crusor::Crusor(int x, int y)
{
//光标现在状态为不显示.
state = C_HIDE;
X=x;
Y=y;
//不显示光标.
CrusorState = IS_HIDE;
}
//析构函数
Crusor::~Crusor()
{
//在析构前应当隐藏起来.
Hide();
//不显示光标.
CrusorState = IS_HIDE;
}
//打开光标.
void
Crusor::Show()
{
//不显示光标.
CrusorState = IS_SHOW;
if(state == C_HIDE)
{
DrawCrusor();
}
}
//关闭光标.
void
Crusor::Hide()
{
//如果光标是显示的,先隐藏.
if(state == C_SHOW)
{
DrawCrusor();
}
//不显示光标.
CrusorState = IS_HIDE;
}
//移动光标.
void
Crusor::MoveCrusor(int x, int y)
{
if(state == C_HIDE)
{
//如果光标是不显示状态,直接改变坐标.
X=x;
Y=y;
}
else
{
//如果光标是显示状态,那么先隐藏起来,再改变坐标.
Hide();
X=x;
Y=y;
}
}
//显示/隐藏光标.
void
Crusor::DrawCrusor()
{
if(CrusorState == IS_SHOW)
{
//保存正在使用的颜色.
TempColor=getcolor();
//设置光标为亮白色.
setcolor(15);
//设置画线为异或模式.
setwritemode(1);
//画光标.
for(int i=0; i<=7; i++)
{
putpixel(X+i, Y, getpixel(X+i, Y)^0xff);
putpixel(X+i, Y+1, getpixel(X+i, Y+1)^0xff);
}
//恢复原来颜色.
setcolor(TempColor);
//记录当前状态.
if(state == C_HIDE)
{
state = C_SHOW;
}
else
{
state = C_HIDE;
}
//恢复拷贝模式.
setwritemode(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -