热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言操作鼠标,c++鼠标操作

本文目录一览:1、C语言鼠标移动2、C语言怎么实现鼠标操作3、C语言怎样实现鼠标事件,纯C可不可以?4、如何用c语言来实现鼠标移动。5、如何用C语言移动鼠标?6、C语言

本文目录一览:


  • 1、C语言鼠标移动


  • 2、C语言怎么实现鼠标操作


  • 3、C语言怎样实现鼠标事件,纯C可不可以?


  • 4、如何用c语言来实现鼠标移动。


  • 5、如何用C语言移动鼠标?


  • 6、C语言鼠标操作

C语言鼠标移动

SetCursorPos( x,y ); 移动鼠标到x,y位置

mouse_event( MOUSEEVENTF_LEFTDOWN, x,y,0,0 ); 左键按下

mouse_event( MOUSEEVENTF_RIGHTDOWN, x,y,0,0 ); 右键按下

如果要捕捉鼠标的移动,一般采用勾子程序,详情,请查阅鼠标勾子代码

C语言怎么实现鼠标操作

VOID keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtraInfo ); 4个参数都是输入参数。 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可不可以?

我猜你说的纯C指的是标准C(Standard C)。如果是这样的话,我可以明确告诉你确实没有鼠标事件。

标准C库的所有头文件可以参照官方网站,里面有各头文件中包含函数功能比较详细的说明。

关于鼠标我要说一下,图形界面不是计算机运行的必需模块,操作系统甚至可以没有鼠标驱动。上过计算机操作系统课之后你应该知道,一个操作系统能够跑起来,只需要有各进程调度和资源分配,并不依赖图形界面。每个进程在设计的时候可以自由选择自己需要的函数库进行封装链接(或者运行时动态链接)。比方说你写个程序只需要计算1+1,那么要图形界面模块有啥用呢?

图形用户交互界面(GUI)其实也是特殊的函数库,如果操作系统支持(或者说操作系统中有安装相关函数库的话),则可以在程序中包含头文件进行调用。

如果是正经学计算机的,建议先放下图形交互,放下Windows(当然我没说它不好),尝试接触下OSX以及Linux,你会有比较大的收获。

如何用c语言来实现鼠标移动。

#include stdio.h

int main (void)

{

    SetCursorPos(1,1);

    return 0; 

}

如何用C语言移动鼠标?

#include Windows.h

#include stdio.h

#include process.h

VOID MyPlaySound(LPVOID lp)

{

unsigned FREQUENCY[]={392,392,440,392,523,494,

392,392,440,392,587,523,

392,392,784,659,523,494,440,

698,698,659,523,587,523,

392,392,440,392,523,494,

392,392,440,392,587,523,

392,392,784,659,523,494,440,

698,698,659,523,587,523};

unsigned DELAY[]={375,125,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,500,1000,

375,125,500,500,500,1000};

int CIRCLE;

for(CIRCLE=0;CIRCLE50;CIRCLE++)

{

Beep(FREQUENCY[CIRCLE],DELAY[CIRCLE]);

}

}

VOID MyPrint(LPVOID lp)

{

int i;

char a[10][4]=;

for(i=0;i10;i++)

{

printf("%s",a[i]);

Sleep(500);

}

}

int main()

{

_beginthread(MyPlaySound, 0, NULL);

_beginthread(MyPrint, 0, NULL);

Sleep(20000);

return 0;

}

编译之前记得把项目属性里改成多线程方案的.不然会出错.我是在VS2010下编译的.

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

#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;igSizeg;i++)

    {

        for(j=0;jgSizek+1;j++)

        {

            if(igBegin-1  igSizeg-1  j0  jgSizek-1)

                gameA[i][j]=' ';

            else

                gameA[i][j]=4;

            if(j==gSizek)

                gameA[i][j]=0;

        }

    }

    for(i=0;igSizeg;i++)

        printf("%s\n",gameA[i]);

    while (1)

    {

        if(t=3)

        {

            if(row0  clo0)

                gameA[row][clo]=' ';

            row=rand()%(gSizeg-1);

            clo=rand()%(gSizek-1);

            s0= time(NULL);

            SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);

            if(row3)

                row=4;

            if(clo1)

                clo=1;

            gameA[row][clo]=2;

            for(i=0;igSizeg;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(fen999999)

                    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;

}


推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
author-avatar
mobiledu2502852643
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有