⑴ c語言中怎樣做滑鼠編程
#include
void
hidecursor()
{
console_cursor_info
cursor_info
=
{1,
0};
setconsolecursorinfo(getstdhandle(std_output_handle),
&cursor_info);
}
函數和結構體都在windows.h中定義,函數用法簡單就不說了。
console_cursor_info結構體定義如下:
typedef
struct
{
dword
dwsize;
bool
bvisible;
//為0時游標不可見
}console_cursor_info,
*pconsole_cursor_info;
vc,mingw中均沒問題。
不明白直接hi。
⑵ 如何用c語言來實現滑鼠移動。
使用mouse_event 這個API 可以模擬滑鼠任何操作。
⑶ c語言實現滑鼠
tc中沒有指出滑鼠操作的函數,同樣tc本身也不支持滑鼠
⑷ 我想要小甲魚講解c語言時的那個滑鼠指針主題
不好找只找到相似的
網頁鏈接
網頁鏈接
⑸ C語言滑鼠操作
我之前給別人寫過一個打地鼠的小游戲,就是用滑鼠操作的。發給你參考下。代碼很簡單。
主要函數我在下方說明了,但更多信息你必須自己網路看,一言兩語說不完。
SetConsoleCursorPosition函數可以定位游標位置,也就是文字內容顯示的起點。
ReadConsoleInput(HANDLE hConsoleInput,*INPUT_RECORD lpBuffer,DWORD nLength,
DWORD lpNumberOfEventsRead)函數可以獲取滑鼠的操作信息。
調用過上面函數後,lpBuffer由於是傳址,所以其地址里的值就包含了滑鼠信息。
lpBuffer.EventType == MOUSE_EVENT //判斷是滑鼠事件
lpBuffer.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED//判斷是滑鼠左鍵點擊
兩個判斷一起就是滑鼠左鍵點擊的判斷,其他事件參數你可以自己網上找。
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string.h>
#include<malloc.h>
#definegSizek30//區域大小寬度
#definegSizeg20//區域大小高度
#definegBegin3//活動區域起始行
intmain()
{
intt=0,s0,s1,i,j,count=0,fen=0,row=0,clo=0;
chargameA[gSizeg][gSizek+1],fSave[10]={0};
SetConsoleTitle("打地鼠");
HANDLEhInput=GetStdHandle(STD_INPUT_HANDLE);//獲取標准輸入設備句柄
INPUT_RECORDinRec;
DWORDres;
COORDp0;
p0.X=0;
p0.Y=0;
srand(time(0));
s0=time(NULL);
strcpy(gameA[0],"GAME");
strcpy(gameA[1],"未命中次數:0,計分:000000");
for(i=gBegin-1;i<gSizeg;i++)
{
for(j=0;j<gSizek+1;j++)
{
if(i>gBegin-1&&i<gSizeg-1&&j>0&&j<gSizek-1)
gameA[i][j]='';
else
gameA[i][j]=4;
if(j==gSizek)
gameA[i][j]=0;
}
}
for(i=0;i<gSizeg;i++)
printf("%s ",gameA[i]);
while(1)
{
if(t>=3)
{
if(row>0&&clo>0)
gameA[row][clo]='';
row=rand()%(gSizeg-1);
clo=rand()%(gSizek-1);
s0=time(NULL);
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
if(row<3)
row=4;
if(clo<1)
clo=1;
gameA[row][clo]=2;
for(i=0;i<gSizeg;i++)
{
//gameA[i][gSizeg+1]=0;
printf("%s ",gameA[i]);
}
}
if(count==3)
{
p0.X=10;
p0.Y=8;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
printf("GAMEOVER!");
break;
}
s1=time(NULL);
t=s1-s0;
ReadConsoleInput(hInput,&inRec,1,&res);
if(inRec.EventType==MOUSE_EVENT&&inRec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)//滑鼠左鍵
{
if(inRec.Event.MouseEvent.dwMousePosition.X==clo&&inRec.Event.MouseEvent.dwMousePosition.Y==row)
{
if(fen==0)
fen=1;
if(fen>999999)
fen=999999;
else
fen=fen*2;
sprintf(fSave,"%06d",fen);
gameA[1][18]=0;
strcat(gameA[1],fSave);
}
else
{
count++;
fen=0;
gameA[1][11]=count+'0';
}
t=4;
}
}
while(1);
return0;
}
⑹ C語言編寫窗口程序,改變滑鼠指針,始終沒有效果
你確定你把 resouce添加到工程中了 並且include了?
並且 wndclass 結構體的 hCursor 用了 LoadCursor 進行正確的載入?
⑺ C語言下怎麼用滑鼠啊
/*這個我確實不會,直接找了一篇你看下,估計有所參考*/
#include <dos.h>
#include <bios.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
#include "graphics.h"
#define R 15 /*滑鼠的形態*/
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */
initgraph(&gd, &gm, "");
}
/*獲取滑鼠位置和按鍵,key=1是左鍵,key=2是右鍵*/
void getmouse(int *x,int *y,int *key)
{
union REGS inregs,outregs;
inregs.x.ax=3; /*獲取滑鼠位置和狀態也可以用3*/
int86(0x33,&inregs,&outregs); /*中斷調用*/
*x=outregs.x.cx; /*cx寄存器中存的是橫坐標*/
*y=outregs.x.dx; /*dx寄存器中存的是列坐標*/
*key=outregs.x.bx; /*bx寄存器是按鍵狀態*/
}
void visbilemouse()
{
union REGS inregs,outregs;
inregs.x.ax=0x01; /*顯示滑鼠*/
int86(0x33,&inregs,&outregs);
}
/*按鍵後,返回當前滑鼠的x,y和按鍵狀態,知道按鍵後才返回*/
void mouse(int *x,int *y,int *z) /*畫滑鼠是利用將一個空矩形存入內存中,然後再在該空矩形中畫滑鼠形狀*/
{
int a=0,b=0,c=0,a_old=0,b_old=0; /*a,b的值可以隨便*/
int *ball; /*定義指向內存的存儲圖形的指針*/
ball=malloc(imagesize(a,b,a+R,b+R)); /*返回矩形的大小*/
getimage(a,b,a+R,b+R,ball); /*第一次將圖形(一個空矩形)存入到內存中,內存中存入的是一個空矩形*/
/*setcolor(GREEN);
setlinestyle(0,0,1);
line(a,b,a+R,b+R/2);
line(a,b,a+R/2,b+R);
line(a+R,b+R/2,a+R/2,b+R);
line(a+R*3/4,b+R*3/4,a+R,b+R); 同樣可要可不要,畫滑鼠*/
while(c==0) /*直到按鍵後才返回,不按鍵一直循環*/
{
getmouse(&a,&b,&c); /*a,為橫坐標,b,為列坐標,c為按鍵狀態*/
if(a<0) a=0; /*保證滑鼠左邊不出界*/
if(b<0) b=0; /*保證上面不出界*/
if(a>getmaxx()-R) a=getmaxx()-R; /*保證右邊不出界*/
if(b>getmaxy()-R) b=getmaxy()-R; /*保證下邊不出界*/
if(a!=a_old || b!=b_old) /*當滑鼠移動時*/
{
putimage(a_old,b_old,ball,0); /*在a_old,b_old輸出圖形,用來擦掉原來的滑鼠*/
getimage(a,b,a+R,b+R,ball); /*這條語句是將目前滑鼠所在位置的圖形存貯到ball裡面試著看著有無這條語句的區別*/
/*不需要在獲取了*/
setcolor(GREEN);
setlinestyle(0,0,1);
line(a,b,a+R,b+R/2);
line(a,b,a+R/2,b+R);
line(a+R,b+R/2,a+R/2,b+R);
line(a+R*3/4,b+R*3/4,a+R,b+R); /*畫滑鼠*/
}
a_old=a;b_old=b;
} /*while()結束*/
*x=a;*y=b;*z=c; /*返回按鍵後滑鼠的位置*/
putimage(a,b,ball,0); /*將滑鼠擦掉,因為存在ball裡面的是一個背景為預設狀態下的一個空矩形*/
free(ball);
}
/*主要思想是通過getimage,putimage,imagesize圖形的存貯一個當前的圖形來擦拭掉以前的滑鼠圖形,也可以用清屏部分屏幕來實現*/
void main()
{
int x,y,z;
initgr();
visbilemouse();
do
{
setcolor(WHITE);
rectangle(175,8,220,25);
outtextxy(180,10,"exit");
mouse(&x,&y,&z);
if(z==1)
{
setlinestyle(0,0,1);
setcolor(12);
circle(x,y,1);
}
if(z==2)
{setfillstyle(1,BLACK);
bar(0,0,getmaxx(),getmaxy());
}
}while(x<175 || x>220 || y<8 || y>25);
closegraph();
}
⑻ C語言滑鼠移動
SetCursorPos( x,y ); 移動滑鼠到x,y位置
mouse_event( MOUSEEVENTF_LEFTDOWN, x,y,0,0 ); 左鍵按下
mouse_event( MOUSEEVENTF_RIGHTDOWN, x,y,0,0 ); 右鍵按下
如果要捕捉滑鼠的移動,一般採用勾子程序,詳情,請查閱滑鼠勾子代碼
⑼ C語言是怎樣實現滑鼠事件控制的可不可以用純C做
可以,需要調用windowsAPI函數。
頭文件windows.h。
簡單思路:
通過GetStdHandle獲取標准輸入句柄。
再通過ReadConsokeInput將輸入信息存儲到結構體類型INPUT_RECODE變數中。
再通過判斷,截取到滑鼠電擊的事件。
具體API函數、參數、功能還有很多。需要網上找資料可以學。
我這里就簡單寫一個,滑鼠點擊控制台任意位置,並在該位置列印字元串。
#include<stdio.h>
#include<windows.h>
intmain()
{
HANDLEhInput=GetStdHandle(STD_INPUT_HANDLE);//獲取標准輸入設備句柄
INPUT_RECORDinRec;
DWORDres;
COORDp0;
while(1)
{
ReadConsoleInput(hInput,&inRec,1,&res);
if(inRec.EventType==MOUSE_EVENT&&inRec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)//滑鼠左鍵
{
p0.X=inRec.Event.MouseEvent.dwMousePosition.X;
p0.Y=inRec.Event.MouseEvent.dwMousePosition.Y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
printf("你在這里點擊的左鍵
");
}
}
return0;
}