用Win32 API
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設與網(wǎng)絡營銷,包括做網(wǎng)站、網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡推廣、整站優(yōu)化營銷策劃推廣、電子商務、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制及解決方案,創(chuàng)新互聯(lián)核心團隊10年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設服務,在網(wǎng)站建設行業(yè)內(nèi)樹立了良好口碑。
SetConsoleCursorPosition是API中設置桐汪控制臺光標位置的函數(shù)。
#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;
}
分類: 電腦/網(wǎng)絡 程序設計 其他編程語言
問題描述:
誰有c語言的鼠標操作函數(shù)集,越多越好
解析:
我給你個程序,里面涉及到鼠標操作團悉,具體你可以下載《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();/*求橫向象點坐標數(shù)*/
Y__max=getmaxy();/*求縱向象點坐標數(shù)*/
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)/*讀鼠標位置及狀態(tài)*/
{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,讀鼠標位置及狀態(tài)*/
int86(0x33,regs,regs);
xnew=regs.x.cx;/*返回鼠標當前的位置的X坐標*/
ynew=regs.x.dx;/*返回鼠標當前的位置的Y坐標*/
*pbuttons=regs.x.bx;/*返回鼠標當前的狀態(tài)*/
}while(xnew==x0ynew==y0*pbuttons==but0);
/*當鼠標狀態(tài)改變或位置改變終止循環(huán)*/
but0=*pbuttons;/*將鼠標狀態(tài)保存到靜態(tài)變量中*/
x0=xnew;y0=ynew;/*將鼠標位置保存到靜態(tài)變量中*/
*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)函數(shù)來定位光標位置;
但在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用于在相應的設備設置光標的位置,兩個參數(shù)分別是設備句柄和光標位置結構。GetStdHandle定義在winbase.h上用于獲得標準輸入、輸出、錯誤輸出句柄
當參數(shù)標識為STD_OUTPUT_HANDLE時獲得標準輸出句巖清柄
善逗侍于使用搜索引擎,搜到的
1、使用fseek函數(shù)即可更改文件指針穗銀的位置。
函數(shù)名: fseek
功 能: 重定位流上的文件指針
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函數(shù)設置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為稿搜基準,偏移offset個字節(jié)的位置。如果執(zhí)行失敗(比如offset超過文件自身大小),則不改變stream指向的位置。
返回值: 成功,返回0,否則返回其他值。
2、例子:
fseek(fp,100L,0);//把文件內(nèi)部指針移動到離文件開頭100字節(jié)處猜敬宴;
fseek(fp,100L,1);//把文件內(nèi)部指針移動到離文件當前位置100字節(jié)處;
fseek(fp,-100L,2);//把文件內(nèi)部指針退回到離文件結尾100字節(jié)處。