C语言鼠标操作

新手,刚学完C语言从入门到精通,编了一个小游戏,妈说不能用鼠标,太烂了。想学钩子,网上看不懂。dian j

我之前给别人写过一个打地鼠的小游戏,就是用鼠标操作的。发给你参考下。代码很简单。

主要函数我在下方说明了,但更多信息你必须自己百度看,一言两语说不完。

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>
#define gSizek 30//区域大小宽度
#define gSizeg 20//区域大小高度
#define gBegin 3//活动区域起始行
int main()
{
    int t=0,s0,s1,i,j,count=0,fen=0,row=0,clo=0;
    char gameA[gSizeg][gSizek+1],fSave[10]={0};
    SetConsoleTitle("打地鼠");
    HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE); // 获取标准输入设备句柄
    INPUT_RECORD inRec;
    DWORD res;
    COORD p0;
    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\n",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\n",gameA[i]);
            }

        }
        if(count==3)
        {
            p0.X=10;
            p0.Y=8;
            SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
            printf("GAME OVER!");
            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);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-07-10
找个 GUI 库,或者用 win32 api 编程。

C语言鼠标移动
mouse_event( MOUSEEVENTF_LEFTDOWN, x,y,0,0 ); 左键按下 mouse_event( MOUSEEVENTF_RIGHTDOWN, x,y,0,0 ); 右键按下 如果要捕捉鼠标的移动,一般采用勾子程序,详情,请查阅鼠标勾子代码

C语言鼠标操作
SetConsoleCursorPosition函数可以定位光标位置,也就是文字内容显示的起点。ReadConsoleInput(HANDLE hConsoleInput,*INPUT_RECORD lpBuffer,DWORD nLength,DWORD lpNumberOfEventsRead)函数可以获取鼠标的操作信息。调用过上面函数后,lpBuffer由于是传址,所以其地址里的值就包含了鼠标信息。lpBuffer.EventType...

c语言 怎样模拟鼠标键盘操作?
bVk:键名,例如: VK_NUMPAD7,VK_BACK, VK_TAB,VK_SHIFT,VK_F1,。。。keybd_event(VK_MENU,0xb8,0 , 0); -- 按下Alt 键 keybd_event(VK_MENU,0xb8,KEYEVENTF_KEYUP,0); -- 放开 Alt 键 (复位,弹上来)=== 下面程序模拟按 notepad 编辑器。等于C语言 system("notepad")...

C语言是怎样实现鼠标事件控制的?可不可以用纯C做?
简单思路:通过GetStdHandle获取标准输入句柄。再通过ReadConsokeInput将输入信息存储到结构体类型INPUT_RECODE变量中。再通过判断,截取到鼠标电击的事件。具体API函数、参数、功能还有很多。需要网上找资料可以学。我这里就简单写一个,鼠标点击控制台任意位置,并在该位置打印字符串。include <stdio.h>#incl...

如何在c语言中编写用鼠标点击输入
需要mouse.h这个库函数,你百度一下吧,在c的图形化编程中用到 不过用c而不是vc编写这个比较繁琐,呵呵

c语言 如何让鼠标选中的部分每一行都前进一格,如图:
选中,按tab键

C语言编写的计算器的程序 要实现鼠标操作哦
if(c=='-') { if(strcmp(str2,"")==0) \/*如果str2为空,说明是负号,而不是减号*\/ flag=-1; \/*设置负数标志*\/ else { num1=atof(str2); \/*将第二个操作数转换为浮点数*\/ strcpy(str2,""); \/*将str2清空*\/ act=2; \/*做计算减法标志值*\/ setfillstyle(SOLID_FILL,color+3); bar(2...

c语言鼠标定时点击指定位置
c语言鼠标定时点击指定位置需要模拟鼠标在远程桌面中进行移动。定时模拟点击屏幕坐标位置工具,程序采用c语言编写,可以自定义设置时间,设置屏幕坐标,到时间鼠标会自动根据坐标的位置点击一次。

想设置一个鼠标在某一区域进行点击,用中文版C语言怎么写,求教_百度...
用函数mouse_event

c语言鼠标状态怎么定义
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) ...

相似回答