鼠标控制.docx

上传人:b****2 文档编号:2140442 上传时间:2022-10-27 格式:DOCX 页数:15 大小:217.45KB
下载 相关 举报
鼠标控制.docx_第1页
第1页 / 共15页
鼠标控制.docx_第2页
第2页 / 共15页
鼠标控制.docx_第3页
第3页 / 共15页
鼠标控制.docx_第4页
第4页 / 共15页
鼠标控制.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

鼠标控制.docx

《鼠标控制.docx》由会员分享,可在线阅读,更多相关《鼠标控制.docx(15页珍藏版)》请在冰豆网上搜索。

鼠标控制.docx

鼠标控制

学号

2014-2015学年第二学期

1308210101

《高级语言程序设计》

课程设计报告

 

题目:

鼠标控制

专业:

计算机科学与技术

班级:

13计科2班

姓名:

鲍超

指导教师:

樊郁徽

成绩:

计算机学院

2015年6月15日

目录

1设计内容及要求2

1.1概述2

1.2主要功能3

1.3目的和要求3

2概要设计3

2.1数据结构3

1、获取鼠标光标在屏幕上的位置3

2、移动鼠标光标、按下和放下鼠标键3

2.2软件结构4

2.2.1主要功能模块4

2.2.2程序总体框图5

2.2.3各模块之间的关系5

3设计过程或程序代码6

3.1主函数的程序流程图6

3.2对关键代码进行分析和说明7

4设计结果与分析12

4.1程序运行结果截图12

5参考文献15

6小结15

1设计内容及要求

1.1概述

鼠标器作为一种输入设备以其方便灵活的特点,在计算机应用中越来越受到人们的广泛欢迎。

设计鼠标就是为了简化键盘操作的烦琐,从而提高工作效率。

在程序设计中,若能使用鼠标功能,不但能改善用户界面,还会使程序具有专业水平的味道。

利用C语言控制鼠标可以完成许多操作,比如说修改鼠标的光标形状,控制鼠标的移动,利用鼠标画图等等。

现在,在市场上已经有许多控制鼠标的成熟软件,比如说“按键精灵”,而且鼠标控制程序也应用于游戏的开发。

1.2主要功能

1、鼠标左右键转换

2、判断鼠标的操作类型

3、输出鼠标当前坐标信息

4、鼠标经过位置打印字符

1.3目的和要求

目的:

主要利用c语言鼠标控制能力独立设计并开发出一个小型的关于鼠标控制的基本功能集成系统,系统具有如下功能:

鼠标键位转换、判断鼠标的操作类型,在鼠标经过位置打印字符。

要求:

系统以菜单方式工作,根据菜单项序号提示进行工作。

实现对鼠标的基本控制等功能。

2概要设计

2.1数据结构

1、获取鼠标光标在屏幕上的位置

需调用API函数GetCursorPos,GetCursorPos函数把鼠标光标的当前位置存储到结构变量Point中。

结构变量的定义如下:

TypedefstructtagPOINT

{

LONGmouseoposx;

LONGmouseoposy;

}POINT;

2、移动鼠标光标、按下和放下鼠标键

typedefstruct_MOUSE_EVENT_RECORD//鼠标事件结构体

{

COORDdwMousePosition;//当前鼠标在控制台窗口缓冲区的位置

DWORDdwButtonState;//鼠标按键的状态

DWORDdwControlKeyState;//控制键状态

DWORDdwEventFlags;//鼠标事件类型

}MOUSE_EVENT_RECORD;

(1)其中鼠标按键状态dwButtonState可能的值:

FROM_LEFT_1ST_BUTTON_PRESSED//最左边的鼠标键被按下,一般来说就是鼠标左键

FROM_LEFT_2ND_BUTTON_PRESSED//左起第二个鼠标键被按下,一般来说是鼠标中键,就是滚轮键

FROM_LEFT_3RD_BUTTON_PRESSED//左起第三个鼠标键被按下

FROM_LEFT_4TH_BUTTON_PRESSED//左起第四个鼠标键被按下RIGHTMOST_BUTTON_PRESSED//最右边的鼠标键被按下

 

(2)鼠标事件类型dwEventFlags有以下几种:

DOUBLE_CLICK//双击,第一击只作为普通按键事件,第二击才作为双击事件

MOUSE_HWHEELED//水平鼠标滚轮移动

MOUSE_MOVED//鼠标移动

MOUSE_WHEELED//垂直鼠标滚轮移动

0//当鼠标有键被按下或者释放

2.2软件结构

2.2.1主要功能模块

本系统除了主函数之外,还有8个函数模块,实现3个主要功能,以下为8个函数模块:

1、头部时间信息模块:

用于显示程序的辅助信息,在系统初始化界面显示系统当前时间。

2、用户选择信息模块:

本函数用于显示用户在刚进入系统中选择要操作的功能序号模块

3、判断动作模块:

本函数用于判断鼠标点击的状态

4、判断鼠标操作类型功能模块:

从判断鼠标动作模块中返回操作状态值,由此给用户反馈操作信息

5、鼠标经过位置打印字符:

本函数根据鼠标的移动的轨迹,打印指定字符

6、鼠标左右键转换模块:

本函数用于转换鼠标的左右键

7、设置鼠标位置模块:

根据所传入的坐标信息,将鼠标移至坐标处

8、显示鼠标坐标信息模块:

本函数用于在控制台底部显示当前鼠标的坐标位置信息

2.2.2程序总体框图

 

图2.2.2-A程序总体框图

2.2.3各模块之间的关系

该系统的主要功能是实现对鼠标的简单应用与控制,其中包括三个核心功能,一是实现鼠标的左右键置换功能;二是判断鼠标操作类型的功能,程序可以根据用户的点击来判断鼠标的操作类型,然后给用户提示信息;三是利用鼠标进行打印字符操作。

各个模块之间的关系是相互联系的。

首先,主函数调用了头部时间信息函数和用户输入菜单函数。

用户输入功能所对应的序号,程序自动连接到指定的功能模块。

子函数之间也是有联系的,比如,判断鼠标类型操作模块调用了鼠标的判断点击状态函数,还有,鼠标进过位置打印字符模块调用了设置鼠标位置的函数和显示鼠标位置信息函数。

3设计过程或程序代码

3.1主函数的程序流程图

1、主函数程序(N-S)流程图及运行界面

主函数程序(N-S)流程图(见图3.1-A)

主函数main()

调用选择信息提示模块

scanf("%d",&select)

switch(select)

case1:

zhuanhuan();break;鼠标左右键转换

case2:

judge();break;判断鼠标的操作类型

case3:

painting();break;判断鼠标的操作类型

case4:

exit(0);break;鼠标经过位置打印字符

default:

printf("选择错误\n");

图3.1-A主函数程序

简单说明:

该功能主要显示的是给用户一个进入界面,它主要的是显示该程序主要能够执行的有哪些功能。

下面是显示给用户的界面。

(见图3.1-B)

2、主函数程序运行界面

图3.1-B主函数界面

3.2对关键代码进行分析和说明

1、鼠标左右键的转换

voidzhuanhuan()

{

charc;

SwapMouseButton(TRUE);//设置鼠标键位转换

printf("\n\t\t是否切换为原始状态Y/N:

");

fflush(stdin);

scanf("%c",&c);

while

(1){

if(c=='Y'||c=='y'){

SwapMouseButton(FALSE);//设置鼠标键位转换

break;

}elseif(c=='N'||c=='n'){

printf("\n\t\t是否切换为原始状态Y/N:

");

fflush(stdin);

scanf("%c",&c);

}

}

printf("\n\t\t设置成功!

:

");

}

2、判断鼠标点击类型

intinput()

{

intX,Y;

while

(1){

COORDpos={0,0};

ReadConsoleInput(handle_in,&mouserec,1,&res);

pos=mouserec.Event.MouseEvent.dwMousePosition;

Y=(int)pos.Y;

X=(int)pos.X;

if(mouserec.EventType==MOUSE_EVENT&&mouserec.Event.MouseEvent.dwEventFlags==RIGHTMOST_BUTTON_PRESSED)/*鼠标左键双击*/

return1;

if(mouserec.EventType==MOUSE_EVENT&&mouserec.Event.MouseEvent.dwButtonState==RIGHTMOST_BUTTON_PRESSED)/*鼠标右键单击*/

return2;

if(mouserec.EventType==MOUSE_EVENT&&mouserec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)/*鼠标左键单击*/

{

if(X>=1&&X<80&&Y==26)/*控制台第一行*/

return3;

elseif(X>=1&&X<80&&Y==27)/*控制台第二行*/

return4;

}

}

}

3、判断鼠标操作类型

voidjudge()

{

intrt;

handle_in=GetStdHandle(STD_INPUT_HANDLE);//获得标准输入设备句柄

handle_out=GetStdHandle(STD_OUTPUT_HANDLE);//获得标准输出设备句柄

INPUT_RECORDmouserec;//定义输入事件结构体

DWORDres;//用于存储读取记录

COORDpos={0,0};//用于存储鼠标当前位置

pos=mouserec.Event.MouseEvent.dwMousePosition;//获得当前鼠标位置

gotoxy(0,50);//在第50行显示鼠标位置

HWNDhwnd=FindWindow("ConsoleWindowClass",NULL);//控制台窗口句柄

while

(1){

ReadConsoleInput(handle_in,&mouserec,1,&res);//读取1个输入事件

switch(mouserec.EventType)

{

caseMOUSE_EVENT:

{

rt=input();

switch(rt){

case1:

MessageBox(hwnd,"双击操作","操作",0);//弹出对话框

break;

case2:

MessageBox(hwnd,"右键单击","操作",0);//弹出对话框

break;

case3:

MessageBox(hwnd,"左键单击第一行","操作",0);//弹出对话框

break;

case4:

MessageBox(hwnd,"左键单击第二行","操作",0);//弹出对话框

break;

}

}

break;

}

}

4、在鼠标经过的位置打印字符

voidpainting()

{

handle_in=GetStdHandle(STD_INPUT_HANDLE);

handle_out=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1