十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
用Win32 API
创新互联致力于互联网品牌建设与网络营销,包括做网站、网站制作、SEO优化、网络推广、整站优化营销策划推广、电子商务、移动互联网营销等。创新互联为不同类型的客户提供良好的互联网应用定制及解决方案,创新互联核心团队10年专注互联网开发,积累了丰富的网站经验,为广大企业客户提供一站式企业网站建设服务,在网站建设行业内树立了良好口碑。
SetConsoleCursorPosition是API中设置桐汪控制台光标位置的函数。
#include stdio.h
#include windows.h
int main(void)
{
HANDLE hOut;
COORD pos= {0,2}; /* 光标的起始位(第1列,第3行) 0是谨仿第1列 2是第祥轮纤3行*/
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
printf("定位光标位置(%d,%d)\n",pos.X,pos.Y);
return 0;
}
分类: 电脑/网络 程序设计 其他编程语言
问题描述:
谁有c语言的鼠标操作函数集,越多越好
解析:
我给你个程序,里面涉及到鼠标操作团悉,具体你可以下载《DOS编程大全》这本书,有关于鼠标的。
还不懂,加我QQ(先声明我也是菜鸟):***********。注明:C语言
#includedos.h
#includegraphics.h
#includeconio.h
#includestdio.h
union REGS regs;
int X__max,Y__max,x_max,y_max;
void Initgr(void) /*屏幕初始化成图形模式*/
{
int w,h,grdriver=DETECT,grmode;
registerbgidriver(EGAVGA_driver);
initgraph(grdriver,grmode,"");/*在双引号中可加你tc放的路径,但要在tc里有EGAVGA.BGI这个来初始图形*/
if(graphresult())/*若调用不成功,退出*/
{printf("\n 调用失败!\则枝n");
exit(1);
}
X__max=getmaxx();/*求横向象点坐标数*/
Y__max=getmaxy();/*求纵向象点坐标数*/
getaspectratio(w,h);/*求纵横比*/
x_max=1000; /*设置屏幕坐标的宽度*/
y_max=x_max*(float)Y__max*h/((float)X__max*w);
}
int Msinit(int Xlo,int Xhi,int Ylo,int Yhi)/*鼠标初始化*/
{int retcode;
regs.x.ax=0;/塌盯乎*初始化鼠标*/
int86(0x33,regs,regs);
retcode=regs.x.ax;
if(retcode==0) return 0;
regs.x.ax=7;/*设置鼠标X方向的移动范围*/
regs.x.cx=Xlo;
regs.x.dx=Xhi;
int86(0x33,regs,regs);
regs.x.ax=8;/*设置鼠标Y方向的移动范围*/
regs.x.cx=Ylo;
regs.x.dx=Yhi;
int86(0x33,regs,regs);
regs.x.ax=15;/*设置mickey与象素的比,这各会影响鼠标移动速度*/
regs.x.cx=(int)(x_max/X__max);
regs.x.dx=(int)(y_max/Y__max);
int86(0x33,regs,regs);
return retcode;
}
int Msread(int *px,int *py,int *pbuttons)/*读鼠标位置及状态*/
{static int x0=320,y0=240,but0=0;
int xnew,ynew,ch;
do{
if(kbhit()){
ch=getch();
if(ch==13){
*pbuttons=1;
return -1;
}
else return ch; /*返回键盘输入*/
}
regs.x.ax=3; /*调用功能3,读鼠标位置及状态*/
int86(0x33,regs,regs);
xnew=regs.x.cx;/*返回鼠标当前的位置的X坐标*/
ynew=regs.x.dx;/*返回鼠标当前的位置的Y坐标*/
*pbuttons=regs.x.bx;/*返回鼠标当前的状态*/
}while(xnew==x0ynew==y0*pbuttons==but0);
/*当鼠标状态改变或位置改变终止循环*/
but0=*pbuttons;/*将鼠标状态保存到静态变量中*/
x0=xnew;y0=ynew;/*将鼠标位置保存到静态变量中*/
*px=xnew;*py=(int)(y_max-ynew);
return -1;
}
int Xpixel(int x)/*由象素坐标变换为屏幕坐标*/
{ return (int)((long)X__max*x/x_max);}
int Ypixel(int y)
{ return Y__max-(int)((long)Y__max*y/y_max);}
void Cursor(int x,int y) /*显示十字光标*/
{int X=Xpixel(x),Y=Ypixel(y),color;
char *str=" \0";
line(X-8,Y,X-3,Y);
line(X,Y-8,X,Y-4);
line(X+3,Y,X+8,Y);
line(X,Y+4,X,Y+8);
color=getcolor();
setcolor(BLACK);
outtextxy(X__max-100,10,str);/*删除前次显示值*/
sprintf(str,"%d,%d",x,y);
setcolor(WHITE);
outtextxy(X__max-100,10,str);/*在屏幕右上角显示当前光标的坐标*/
setcolor(color);
}
main()
{int buttons,X,Y,x,y,a,b;
char i;
Initgr();/*初始化图形屏幕*/
setcolor(EGA_LIGHTRED);/*设置屏幕前景色*/
line(1,1,X__max-1,1); /*在屏幕四周画一矩形*/
line(1,1,1,Y__max-1);
line(X__max-1,1,X__max-1,Y__max-1);
line(1,Y__max-1,X__max-1,Y__max-1);
setcolor(EGA_WHITE);
printf("\n 按鼠标右键终止程序\n");
printf(" 然后按任意键退出");
seritemode(XOR_PUT);/*设置屏幕输出模式*/
Msinit(0,(int)x_max,0,(int)y_max);/*初始化鼠标*/
a=x_max;b=y_max;
x=0;
Cursor(a,b); /*在a=x_max;b=y_max;处画指针*/
while(x!=2)
{Msread(X,Y,x);
Cursor(a,b); /*删除之前的鼠标,因为屏幕输出模式的关系*/
if(x==1){
a=(int)(X*1.0/x_max*X__max);b=(int)((y_max-Y)*1.0/y_max*Y__max);
circle(a,b,1); } /*画点*/
Cursor(X,Y);
a=X;b=Y;
}
Cursor(X,Y);/*再调用一次把原来的指针削掉*/
getch();
closegraph();
}
C语言里面有gotoxy(x,y)函数来定位光标位置;
但在VC下面没有conio.h,也就没有gotoxy(),只在tc,bc中才有
下面是别人构造的一个:
includewindows.h
#includeiostream
using namespace std;
void gotoxy(int x, int y) {
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int main()
{
gotoxy(20,12);
std::cout"Hello world!"粗指前endl;
return 0;
}
其中的COORD和SetConsoleCursorPosition定义在wincon.h中~
SetConsoleCursorPosition用于在相应的设备设置光标的位置,两个参数分别是设备句柄和光标位置结构。GetStdHandle定义在winbase.h上用于获得标准输入、输出、错误输出句柄
当参数标识为STD_OUTPUT_HANDLE时获得标准输出句岩清柄
善逗侍于使用搜索引擎,搜到的
1、使用fseek函数即可更改文件指针穗银的位置。
函数名: fseek
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为稿搜基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值: 成功,返回0,否则返回其他值。
2、例子:
fseek(fp,100L,0);//把文件内部指针移动到离文件开头100字节处猜敬宴;
fseek(fp,100L,1);//把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);//把文件内部指针退回到离文件结尾100字节处。