资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言中鼠标函数说明,C语言控制鼠标

C语言响应鼠标单击事件的函数吗

没有响应函数,而是消息,点击鼠标以后,系统扑捉到消息然后传递给应用程序的消息处理函数,消息处理函数,根据switch语句进行判断,在相应的case下自己编写函数。 switch(msg) { case:WM_LBUTTONDOWN 自己编写的函数或语句

创新互联公司主营曲周网站建设的网络公司,主营网站建设方案,重庆APP软件开发,曲周h5成都小程序开发搭建,曲周网站营销推广欢迎曲周等地区企业咨询

关于C语言鼠标驱动程序(高手请仔细看)

设置鼠标的光标形状

设置鼠标光标需要三个方面信息:

鼠标的外边界:8*8点阵,16个整数

鼠标的内部形状:8*8点阵,16个整数

以及鼠标的热点的相对坐标:int x,y

其中外边界和内边界连续存放,为长度为32的整型数组 int marks[32] SetCurs(unsigned masks[32],x,y)

{ union REGS regs; struct SREGS sregs;

regs.x.ax=9;

regs.x.bx=x; regs.x.cx=y;/* hot spot*/

regs.x.dx=(unsigned)masks;

segread(sregs); int86(0x33,(r)gs,(r)gs);

}

一些不同形状的光标数据:

//mouse

{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,

0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, //Cursor mask

0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x13c0,

0x3ff0, 0x7ff8, 0xfff8, 0xfff8, 0x0824, 0x0822, 0x1ce2, 0x0000},

//empty hand

{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,

0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,

0x0c00, 0x1200, 0x1200, 0x1200, 0x13fe, 0x1249, 0x1249, 0x1249,

0x7249, 0x9001, 0x9001, 0x9001, 0x8001, 0x8001, 0x4002, 0x3ffc},

//full arrow

{0x3fff, 0x1fff, 0x0fff, 0x07ff, 0x03ff, 0x01ff, 0x00ff, 0x007f,

0x003f, 0x00ff, 0x01ff, 0x10ff, 0x30ff, 0xf87f, 0xf87f, 0xfc3f,

0x0000, 0x4000, 0x6000, 0x7000, 0x7800, 0x7c00, 0x7e00, 0x7f00,

0x7f80, 0x7e00, 0x7c00, 0x4600, 0x0600, 0x0300, 0x0300, 0x0180},

//full hand

{0xf3ff, 0xe1ff, 0xe1ff, 0xe1ff, 0xe001, 0xe000, 0xe000, 0xe000,

0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8001, 0xc003,

0x0c00, 0x1200, 0x1200, 0x1200, 0x13fe, 0x1249, 0x1249, 0x1249,

0x7249, 0x9001, 0x9001, 0x9001, 0x8001, 0x8001, 0x4002, 0x3ffc}

};

Point hotspot[]={{0,11},{4,0},{0,0},{4,0}};/*热点*/

谁有c语言的鼠标操作函数集

我给你个程序,里面涉及到鼠标操作,具体你可以下载《DOS编程大全》这本书,有关于鼠标的。

还不懂,加我QQ(先声明我也是菜鸟):410224746。注明: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(" 然后按任意键退出");

setwritemode(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语言鼠标状态怎么定义

void MouseSetXY(int x,int y) /*设置鼠标的位置*/

{

_CX=x;

_DX=y;

_AX=0x04;

geninterrupt(0x33);

/*设置完毕*/

/* Mouse 是我自己定义的存储鼠标当前位置的变量*/

Mouse.x=x;

Mouse.y=y;

}

void MouseGetXY() /*获取鼠标的位置,存储在Mouse中*/

{

_AX=0x03;

geninterrupt(0x33);

Mouse.x=_CX;

Mouse.y=_DX;

}

void SetMouseXRange(int min,int max) /*设置鼠标横向坐标范围*/

{

_AX=0x07;

_CX=min;

_DX=max;

geninterrupt(0x33);

}

void SetMouseYRange(int min,int max) /*设置鼠标纵向坐标范围*/

{

_AX=0x08;

_CX=min;

_DX=max;

geninterrupt(0x33);

}

int LeftPress() /*判断鼠标左键是否被按下*/

{

_AX=0x03;

geninterrupt(0x33);

return (_BX1);

}

int RightPress() /*判断鼠标右键是否被按下*/

{

_AX=0x03;

geninterrupt(0x33);

return (_BX2);

}


网页名称:c语言中鼠标函数说明,C语言控制鼠标
浏览路径:http://cdkjz.cn/article/hooegj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220