百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

【新书推荐】6.1 鼠标基础知识(鼠标的基础操作)

moboyou 2025-08-16 18:36 8 浏览

第六章 鼠标

Windows程序以其友好的用户交互体验著称。键盘和鼠标都是用户与Windows程序交互的工具。键盘一般被当作用来输入和管理文本数据的设备,鼠标则被看作是用来绘制和处理图形对象的设备。上一章我们已经讲述了键盘知识,本章我们将详细讲解鼠标知识及其具体应用。

本章学习知识概要:

鼠标基础知识

客户区鼠标消息

非客户区鼠标消息

程序测试

6.1 鼠标基础知识

本节我们讲述鼠标的一些基础知识。

本节必须掌握的知识点:

鼠标

6.1.1 鼠标

鼠标是1964年由Douglas Engelbart发明的,用来取代由键盘输入的繁琐指令,简化电脑操作。早期的鼠标是单键鼠标,只有一个键,后来逐步改进为双键鼠标和带滚轮的双键鼠标。

检测鼠标

我们可以使用GetSystemMetrics函数来判断是否连接了鼠标:

fMouse = GetSystemMetrics (SM_MOUSEPRESENT);

当鼠标已被安装时,fMouse的值为TRUE(非零),否则值为0。但是,在Windows98中,不论鼠标是否连接上,该函数的返回值总是TRUE。在Windows NT中,该函数的返回值是正确的。

为了确定所安装鼠标的按钮个数,可以利用以下语句:

cButtons = GetSystemMecrics (SM_CMOUSEBUTTONS);

若没有安装鼠标,该函数的返回值为0。但是,在Windows 98下,该函数在没有安装鼠标时还是返回2。

习惯用左手的用户可以利用Windows控制面板来切换鼠标的按钮。程序也可以通过检 査是否调用了带SM_SWAPBUTTON参数的GetSystemMetrics函数,判断鼠标的按钮是否被切换,但是这种方法通常没有必要。食指控制的按钮被认为是左键,即使该按钮在物理位置上位于鼠标的右侧。但是,在一个计算机培训程序中,如果想在屏幕上画出一个鼠标, 在这种情况下可能需要知道鼠标的按钮是否己被切换。

●在控制面板中,还可以设定鼠标的其他参数,比如鼠标双击的速度。从Windows应用 程序中调用SystemParametersinfo函数可以获取或设定这个参数信息。

SystemParametersInfo用于获取或设置系统参数的信息。它允许你查询和修改各种系统设置,如桌面背景、屏幕分辨率、鼠标速度等。

以下是 SystemParametersInfo 函数的原型:

BOOL SystemParametersInfo(

UINT uiAction, // 操作类型

UINT uiParam, // 相关参数

PVOID pvParam, // 相关数据

UINT fWinIni // 更新方式

);

返回值:

如果函数调用成功,返回值为非零值(TRUE)。

如果函数调用失败,返回值为零(FALSE)。

SystemParametersInfo 函数的使用方法取决于所需的操作类型和参数。以下是一些常见的示例用法:

1.获取桌面背景路径:

WCHAR wallpaperPath[MAX_PATH];

SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, wallpaperPath, 0);

在这个示例中,SPI_GETDESKWALLPAPER 是操作类型,MAX_PATH 是缓冲区大小,wallpaperPath 是接收桌面背景路径的缓冲区。


2.设置鼠标速度:

int mouseSpeed = 10; // 设置鼠标速度为 10

SystemParametersInfo(SPI_SETMOUSESPEED, 0, (PVOID)mouseSpeed, SPIF_UPDATEINIFILE);

在这个示例中,SPI_SETMOUSESPEED 是操作类型,(PVOID)mouseSpeed 是要设置的鼠标速度值,SPIF_UPDATEINIFILE 指定更新系统设置。


请注意,具体的操作类型、参数和更新方式取决于你想要实现的具体功能。详细的操作类型和参数值可以在相关的文档或参考资料中找到。

●获取鼠标位置:GetCursorPos

BOOL GetCursorPos(

LPPOINT lpPoint // 接收鼠标位置的指针

);

该函数用于获取当前鼠标的屏幕坐标位置,并将结果存储在指定的 POINT 结构中。


●设置鼠标位置:SetCursorPos

BOOL SetCursorPos(

int X, // 鼠标的水平坐标

int Y // 鼠标的垂直坐标

);

该函数用于设置鼠标的屏幕坐标位置。通过提供目标位置的水平和垂直坐标,可以将鼠标移动到指定的位置。


鼠标热点

当Windows用户移动鼠标时,Windows系统会在显示设备上移动一个位图格式的小图 标,称为“鼠标指针”。鼠标指针具有一个单像素精度的“热点”(hot spot)。热点在显示设备上指示了一个精确的位置。当我提到屏幕上鼠标指针的位置时,实际上是指热点的位罝。

Windows为程序提供了几种预定义的鼠标指针。最常用的是斜向箭头,称为 IDC_ARROW(定义在WINUSER.H头文件中的标识符)。

箭头的顶点即为热点。IDC_CROSS指针(被本章后面的BLOKOUT程序所采用)的热点 位于十字形图案的中心。IDC_WAIT指针呈沙漏形(不同的Windows版本会有所不同),一般用在程序中表示忙碌状态。程序员还可以设计属于自己的指针。本书会在第十章讲述如何设计自定义鼠标指针。对一个具体窗口来说,默认的鼠标指针在定义窗口类结构时就被指定了。是否还记得初始化窗口类时指定的鼠标位图?例如:

wndclass.hCursor = LoadCursor (NULL, XDC_ARR0W);


在 Windows 平台上,可以使用以下函数来获取和设置鼠标热点位置:

●获取鼠标热点位置:GetIconInfo

BOOL GetIconInfo(

HICON hIcon, // 光标图标句柄

PICONINFO piconinfo // ICONINFO 结构指针

);

该函数用于获取光标图标的信息,包括光标热点位置。通过传递光标图标的句柄和指向 ICONINFO 结构的指针,可以获取光标图标的热点位置。

●设置鼠标热点位置:SetCursor

HCURSOR SetCursor(

HCURSOR hCursor // 新的光标句柄

);

该函数用于设置当前光标。通过传递一个新的光标句柄,可以更改当前光标并指定新的热点位置。


显示和隐藏鼠标

●显示/隐藏鼠标光标:ShowCursor

int ShowCursor(

BOOL bShow // 指定是否显示鼠标光标

);

该函数用于显示或隐藏鼠标光标。通过传递 TRUE 或 FALSE 来决定是否显示鼠标光标。


鼠标消息

鼠标消息是指在 Windows 系统中与鼠标操作相关的消息。当用户与鼠标进行交互时,系统会生成相应的鼠标消息,以通知应用程序有关鼠标操作的信息。

在 Windows 消息循环中,可以通过检查消息的消息类型来确定是否为鼠标消息,并进一步处理相应的操作。以下是一些常见的鼠标消息:

●WM_MOUSEMOVE:表示鼠标移动消息。当用户移动鼠标时,系统会发送该消息,并包含当前鼠标的屏幕坐标。

●WM_LBUTTONDOWN:表示左键按下消息。当用户按下鼠标左键时,系统会发送该消息,并包含当前鼠标的屏幕坐标。

●WM_LBUTTONUP:表示左键释放消息。当用户释放鼠标左键时,系统会发送该消息,并包含当前鼠标的屏幕坐标。

●WM_RBUTTONDOWN:表示右键按下消息。当用户按下鼠标右键时,系统会发送该消息,并包含当前鼠标的屏幕坐标。

●WM_RBUTTONUP:表示右键释放消息。当用户释放鼠标右键时,系统会发送该消息,并包含当前鼠标的屏幕坐标。

●WM_MOUSEWHEEL:表示鼠标滚轮消息。当用户滚动鼠标滚轮时,系统会发送该消息,并包含滚动的距离和方向。

这些消息是在 Windows 消息循环中使用的常见鼠标消息,你可以在应用程序的消息处理过程中捕获并响应这些消息。使用消息处理函数,如 WndProc,可以通过检查消息的消息类型来处理相应的鼠标操作。

本文摘自编程达人系列教材《Windows API每日一练》。

相关推荐

Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录

首先介绍一下此函数:SHEETSNAME函数用于获取工作表的名称,有三个可选参数。语法:=SHEETSNAME([参照区域],[结果方向],[工作表范围])(参照区域,可选。给出参照,只返回参照单元格...

Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用

一、函数概述HOUR函数是Excel中用于提取时间值小时部分的日期时间函数,返回0(12:00AM)到23(11:00PM)之间的整数。该函数在时间数据分析、考勤统计、日程安排等场景中应用广泛。语...

Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用

原创版权所有介绍一个信息管理系统,要求可以实现:多条件、模糊查找,手动输入的内容能去空格。先看效果,如下图动画演示这样的一个效果要怎样实现呢?本文所用函数有Filter和Search。先用filter...

FILTER函数介绍及经典用法12:FILTER+切片器的应用

EXCEL函数技巧:FILTER经典用法12。FILTER+切片器制作筛选按钮。FILTER的函数的经典用法12是用FILTER的函数和切片器制作一个筛选按钮。像左边的原始数据,右边想要制作一...

office办公应用网站推荐_office办公软件大全

以下是针对Office办公应用(Word/Excel/PPT等)的免费学习网站推荐,涵盖官方教程、综合平台及垂直领域资源,适合不同学习需求:一、官方权威资源1.微软Office官方培训...

WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!

办公最常用的60个函数大全:从入门到精通,效率翻倍!在职场中,WPS/Excel几乎是每个人都离不开的工具,而函数则是其灵魂。掌握常用的函数,不仅能大幅提升工作效率,还能让你在数据处理、报表分析、自动...

收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程

原创版权所有全程图解,方便阅读,内容比较多,请先收藏!Xlookup是Vlookup的升级函数,解决了Vlookup的所有缺点,可以完全取代Vlookup,学完本文后你将可以应对所有的查找难题,内容...

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数在电商运营、物流对账等工作中,经常需要统计快递“揽收到签收”的耗时——比如判断某快递公司是否符合“3天内送达”的服务承...

Excel函数公式教程(490个实例详解)

Excel函数公式教程(490个实例详解)管理层的财务人员为什么那么厉害?就是因为他们精通excel技能!财务人员在日常工作中,经常会用到Excel财务函数公式,比如财务报表分析、工资核算、库存管理等...

Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!

工作中,经常需要从多个单元格区域中提取唯一值,如体育赛事报名信息中提取唯一的参赛者信息等,此时如果复制粘贴然后去重,效率就会很低。如果能合理利用Tocol函数,将会极大地提高工作效率。一、功能及语法结...

Excel中的SCAN函数公式,把计算过程理清,你就会了

Excel新版本里面,除了出现非常好用的xlookup,Filter公式之外,还更新一批自定义函数,可以像写代码一样写公式其中SCAN函数公式,也非常强大,它是一个循环函数,今天来了解这个函数公式的计...

Excel(WPS表格)中多列去重就用Tocol+Unique组合函数,简单高效

在数据的分析和处理中,“去重”一直是绕不开的话题,如果单列去重,可以使用Unique函数完成,如果多列去重,如下图:从数据信息中可以看到,每位参赛者参加了多项运动,如果想知道去重后的参赛者有多少人,该...

Excel(WPS表格)函数Groupby,聚合统计,快速提高效率!

在前期的内容中,我们讲了很多的统计函数,如Sum系列、Average系列、Count系列、Rank系列等等……但如果用一个函数实现类似数据透视表的功能,就必须用Groupby函数,按指定字段进行聚合汇...

Excel新版本,IFS函数公式,太强大了!

我们举一个工作实例,现在需要计算业务员的奖励数据,右边是公司的奖励标准:在新版本的函数公式出来之前,我们需要使用IF函数公式来解决1、IF函数公式IF函数公式由三个参数组成,IF(判断条件,对的时候返...

Excel不用函数公式数据透视表,1秒完成多列项目汇总统计

如何将这里的多组数据进行汇总统计?每组数据当中一列是不同菜品,另一列就是该菜品的销售数量。如何进行汇总统计得到所有的菜品销售数量的求和、技术、平均、最大、最小值等数据?不用函数公式和数据透视表,一秒就...