windows窗体编程 / windowsAPI /如何获取鼠标相对于客户区的位置

本文介绍了如何使用Windows API在C++中获取鼠标相对于窗体客户区的位置。通过GetCursorPos()获取屏幕坐标,再用ScreenToClient()转换为客户区坐标,实现文字跟随鼠标移动的效果。同时,文章还涉及了改变文字颜色、输出文字以及调整字体大小的相关函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言猜数字程序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   
    srand((int)time(0));
    int answer=rand()% 100 + 1;
    int guess=0;
    while(1){
   
        printf("请输入一个一到一百的整数:");
        scanf("%d",&guess);
        if(guess > answer){
   
            printf("猜大了!\n");
        }
        else if(guess <answer){
   
            printf("猜小了!\n");
        }
        else{
   
            printf("恭喜!猜对了!\n");
            break;
        }
    }
    return 0;
}

Window API 函数参考:http://www.office-cn.net/t/api/index.html?web.htm

###“HelloWorldGame”:

  • 按下鼠标左右键及移动鼠标时改变文字颜色
  • 设置文字输出位置为当前鼠标位置,让字符串字符串跟随鼠标移动

鼠标消息

WM_LBUTTONDBLCLK 鼠标左键被双击时此消息会被发送
WM_LBUTTONDOWN 鼠标左键被按下
WM_LBUTTONUP 鼠标左键被释放
MK_MBUTTON… 类上,对应鼠标中键
MK_RBUTTON 类上,对应鼠标右键
WM_MOUSEHWHEEL 鼠标横向滑轮滑动
WM_MOUSEMOVE 光标移动
WM_MOUSEWHEEL 鼠标滑轮滑动

更改文字颜色

setTextColor()
说明
设置当前文本颜色。这种颜色也称为“前景色”
参数
hdc → Long,设备场景的句柄
crColor → Long,新的文本色

输出文字

TextOut

获取鼠标位置

利用GetCursorPos()方法获取鼠标的屏幕坐标位置之后

利用ScreenToClient()方法获得鼠标相对于客户区的的位置

GetCursorPos()
说明
获取鼠标指针的当前位置
参数
lpPoint → POINTAPI,随同指针在屏幕像素坐标中的位置载入的一个结构

注意:获取的是鼠标相对于电脑屏幕的坐标,因此使用GetCursorPos()方法获取鼠标的位置会出现偏差(即并不是当前鼠标所在位置(相对客户区的位置),有一点的偏移(在鼠标当前位置的右下方))
鼠标位置

ScreenToClient()

​ 获取鼠标相对于客户区的坐标

说明
判断屏幕上一个指定点的客户区坐标
参数
hwnd → Long,一个窗口的句柄,该窗口定义了要使用的客户区坐标系统
lpPoint → POINTAPI,屏幕坐标系统中包含了屏幕点的结构。这个函数会随同相应的客户区坐标(由hwnd决定)载入结构

代码

// HelloWorldGame.cpp : 定义应用程序的入口点。
//

#include "framework.h"
#include "HelloWorldGame.h"

#define MAX_LOADSTRING 100

// 全局变量:
HINSTANCE hInst;                                // 当前实例
WCHAR szTitle[MAX_LOADSTRING];                  // 标题栏文本
WCHAR szWindowClass[MAX_LOADSTRING];            // 主窗口类名

// 此代码模块中包含的函数的前向声明:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值