鼠标相关API应用

news/2025/2/26 13:42:54
  我们在编制应用软件的过程中,常常需要对光标和鼠标操作,本人在文中介绍了Windows系统中有关实现对鼠标和光标进行操作的API函数,并给出了在Visual C6.0++中利用所介绍的API函数实现对鼠标和光标的操作的代码。

   一、隐藏和显示光标

  函数: int ShowCursor ( BOOL bShow );

  参数 bshow,为布尔型,bShow的值为False时隐藏光标,为True时显示光标;该函数的返回值为整型,为鼠标隐藏或显示的指数器;返回值大于等于0时显示光标,否则隐藏鼠标;如果安装了鼠标初值为0。

  实例:

  在基于对话框的应用程序中放置两个Button,名称分别为HideCursor和ShowCursor;再放置一个CStatic控件,名称为Label1,用于显示光标计数器。

  源程序为:

// 使光标计数器的值减一,如果小于零,隐藏光标
void CMyTestDlg::OnHideCursor()
{
int i;
i=ShowCursor(FALSE);
Cstring string;
string.Format(_T("%d" ),i);
Label1.SetWindowText(&string);
}
// 使光标计数器的值加一,如果大于等于零,显示光标
void CMyTestDlg::OnShowCursor()
{
int j;
j=ShowCursor(TRUE);
Cstring string;
string.Format(_T("%d" ),j);
Label1.SetWindowText(&string);
}

  运行程序,连续单击ShowCursor按钮,你会见到计数器从1(光标显示时初值为0)开始不断加1;再连续单击HideCursor按钮,又会见到计数器不断减1,当计数器为-1时开始隐藏光标。

  二、交换鼠标左右键和恢复

  函数:

BOOL SwapMouseButton ( BOOL fSwap );

  参数 fSwap,为布尔型,TRUE表示交换鼠标左右键,FALSE表示恢复系统默认左右手习惯;返回值亦为布尔型,交换后,返回值TRUE,恢复正常值为FALSE。

  实例:

  在应用程序中放置两个Button,名称分别为ReverseMouse和RestoreMouse。

  源程序为:

//交换鼠标左右键
void CMyTestDlg::OnReverseMouse()
{
BOOL T;
T=SwapMouseButton(True);
If(T)
MessageBox("鼠标左右键交换成功!");
}

// 恢复鼠标左右键交换
void CMyTestDlg::OnRestoreMouse()
{
BOOL T;
T=SwapMouseButton(FALSE);
If(!T)
MessageBox("鼠标左右键恢复为默认状态!");
}

  运行程序,左键单击ReverseMouse按钮,此时实现鼠标左右键功能切换;再右键单击RestoreMouse按钮,此时实现鼠标左右键功能恢复。

  三、得到鼠标双击时间

  1、函数:

UINT GetDoubleClickTime(VOID);

  该函数无参数;它的返回值为毫秒,为双击鼠标双击有效的时间间隔。

  实例:

  在窗口中放置一个Button,名称为GetDoubleClickTime;再放置一个名为Label1的CStatic控件,用于显示双击时间。

  源程序为:

//得到并显示鼠标的双击的时间
void CMyTestDlg::OnGetDoubleClickTime()
{
int DTime;
Cstring string;
DTime:=GetDoubleClickTime();
string.Format(_T("%d" ),Dtime);
Label1.SetWindowText(&string);
}

  运行程序,单击GetDoubleClickTime,在Label1中显示双击的时间,为毫秒级。

  四、设置鼠标双击时间

  函数:

BOOL SetDoubleClickTime ( UINT uInterval );

   参数uInterval,表示鼠标双击时间,为毫秒级,系统默认时间为500;

   返回值为布尔值。

  实例:

  在窗口中放置一个Button,名称为SetDoubleClickTime。

  源程序为:

//设置鼠标的双击的时间
void CmyTestDlg::OnSetDoubleClickTime()
{
Bool T;
T=SetDoubleClickTime(500);
If(T)
MessageBox("成功的设置了鼠标双击时间!");
}

  运行程序,单击BtnSetDoubleClickTime,鼠标双击时间已改变。

  五、将鼠标锁定在一定范围

  函数:

BOOL ClipCursor ( CONST RECT *lpRect );

  参数*lpRect,指向鼠标活动矩形区域的指针;返回值为布尔型,表示锁定成功与否。

  实例:

  在窗口中放置两个Button,名称为LockMouse和UnLockMouse。

  源程序为:

//将鼠标锁定在固定区域
void CmyTestDlg::OnLockMouse()
{
RECT Rect;
BOOL bLock;
Rect.left=10;//设置锁定区域大小;
Rect.top=10;
Rect.right=200;
Rect.bottom=200;
bLock:=ClipCursor(&Rect); // 限制鼠标移动区域
if (block)
MessageBox("鼠标固定在指定区域!");
}

  将鼠标锁定解锁,其实质是将鼠标锁定在整个屏幕区

void CmyTestDlg::OnLockMouse()
{
RECT Rect;
BOOL bLock;
Rect.left=0;//设置锁定区域大小;
Rect.top=0;
Rect.right=600;
Rect.bottom=800;
Block=ClipCursor(&Rect);
if (block)
MessageBox("鼠标固定在屏幕区域!");
}

  运行程序,单击LockMouse,此时鼠标锁定在固定区域中;再单击UnLockMouse键鼠标锁定解锁。当然还可以采用别的方法将鼠标来解锁,如将鼠标锁定在某一个窗口来对鼠标解锁。

  总之,API函数的功能强大,我们可以在多种快速开发工具中使用它,以增强我们程序的功能。以上程序在Windows2000、Visual C++ 6.0中调试通过。

转载于:https://www.cnblogs.com/cnLiou/archive/2005/08/18/217397.html


http://www.niftyadmin.cn/n/4141102.html

相关文章

11.6 MariaDB安装 11.7/11.8/11.9 Apache安装

[rootlizhipenglinux01 mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.conf 配置文件[rootlizhipenglinux01 mariadb]# cp support-files/mysql.server /etc/init.d/mariadb 启动脚本[rootlizhipenglinux01 mariadb]# vim /usr/l…

C语言之函数指针

C语言之函数指针 在C/C中,数据指针是最直接,也最常用的,因此,理解起来也比较容易。而函数指针,作为运行时动态调用(比如回调函数 CallBack Function)是一种常见的,而且是很好用的手段…

Android:Animation

Android 之 Animation 关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式:1. Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画&#xf…

如何高效的编写Verilog HDL——进阶版

博主之前写过一篇文章来谈论如何高效的编写Verlog HDL——菜鸟版,在其中主要强调了使用Notepad来编写Verilog HDL语言的便捷性,为什么说是菜鸟版呢,因为对于新手来说,在还没有熟悉软件和硬件描述语言的时候,使用Notepa…

电脑网络最基本的常识简介(合集)

电脑网络最基本的常识简介 什么是HTML? HTML(Hyper Text Mark-up Language )即超文本标记语言,是 WWW 的描述语言,由 Tim Berners-lee提出。设计 HTML 语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起&a…

三、第一个Servlet (基础教程3)

三、第一个Servlet 作 者 : 仙人掌工作室 3.1 Servlet基本结构 下面的代码显示了一个简单Servlet的基本结构。该Servlet处理的是GET请求,所谓的GET请求,如果你不熟悉HTTP,可以把它看成是当用户在浏览器地址栏输入URL、点击Web页面中的链接、提…

MySQL集结号 -- 基础

绪论 1.初识MySQL 2.SQL语句及学习安排 DQL语言 1.DQL语言之基础查询 2.DQL语言之条件查询 3.DQL语言之排序查询 4.单行函数 5.分组函数 6.分组查询 7.连接查询 -- SQL92标准 8.连接查询 -- SQL99标准 9.子查询 DML语言 1 DDL语言 1 TCL语言 1转载于:https://www.cnblogs.com/J…

截取固定长度字符串显示在页面,多余部分显示为省略号(区分汉字和字符)

以下是代码,呵呵,比较简单,主要是区分汉字和字母,不然一个全是字母,一个全是汉字的两条记录排列在一起时会比较难看,全字符的长度只有全汉字 的一半就显示...号了public static string stringformat(string…