C语言鼠标操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
参考技术A 找个 GUI 库,或者用 win32 api 编程。
C语言编译后的exe程序怎样进行复制粘贴操作
比如这个程序用来加密和解密ASCII码,我想把ASCII码复制下来或者粘贴上去该怎么做?
在这个窗口里鼠标无法右键,ctrl+v的粘贴操作也无法进行
如果不知道请勿瞎答,谢谢!
复制是编辑菜单里的标记
点了标记就可以用鼠标 (按住左键)选择需要的内容
再去编辑菜单里找复制
如果你是先打开cmd 然后再cmd中启动你的exe文件
那么可以直接在cmd窗口点右键 标记复制粘贴.... 参考技术A 你的程序编译成exe, 基本上可以断定你是在windows平台下开发。
windows操作系统的复制粘贴打都可以通过快捷键ctrl+c/v或者右键复制/粘贴来完成。
如果想在命令行模式下,进行复制操作,可以使用COPY命令.COPY命令语法:
COPY SOURCE DESTINATION 参考技术B 鼠标移动到你的运行窗口的标题栏位置(最顶端,有文件名的那里)的空白处,点右键,选编辑,剩下的就和cmd命令行的操作一样了。 参考技术C cmd窗口下,可以右键,选择标记,然后选取需要复制的内容,再右键。就可以保存内容信息了。 参考技术D 既然窗体不行,那就只可以写代码把指定内容写进粘贴板
//1
http://zhidao.baidu.com/link?url=FfDyBofoDSJkLWkgKFnghPtJEQzyZWat7q-dkF9CZUp1WHidxW8jqh6hbUnIqKtsP2dBNnduYooSBAExheRaTa
//2
http://zhidao.baidu.com/link?url=kQg6bh9-sW_GZGKqE0khTqhC0A5tdbfFWX65PKNoSFR4YyYr_d2vtfH7aa6CyxHA1IZp0wDqEB_osJb-rWv73K
//3
http://blog.csdn.net/glt3953/article/details/8808248
以上是关于C语言鼠标操作的主要内容,如果未能解决你的问题,请参考以下文章