C++ lanrenAPI 类:设置鼠标穿透功能

头文件

#ifndef LANRENAPI_H
#define LANRENAPI_H
#include <windows.h>

class lanrenAPI
{
public:
    lanrenAPI();
    ~lanrenAPI();
    // 设置鼠标穿透
    static bool setWindowsMousePenetrate(HWND hwnd, bool setPenetrate = true);
};

#endif // LANRENAPI_H

Cpp 文件

#include "lanrenapi.h"

lanrenAPI::lanrenAPI()
{

}

lanrenAPI::~lanrenAPI()
{

}

bool lanrenAPI::setWindowsMousePenetrate(HWND hwnd, bool setPenetrate)
{
    bool ret;
    if (setPenetrate)
    {
        int a = GetWindowLongA(hwnd, GWL_EXSTYLE);
        a = a | 32 | 524288;
        ret = SetWindowLongA(hwnd, GWL_EXSTYLE, a);
    }
    else
    {
        ret = SetWindowLongA(hwnd, GWL_EXSTYLE, 524288);
    }
    return ret;
}

如何在其他 cpp 文件中使用

为了在其他 cpp 文件中直接调用 setWindowsMousePenetrate 函数,而无需写 lanrenAPI:: 前缀,您需要在调用函数的 cpp 文件中包含 lanrenapi.h 头文件,然后可以直接用函数名调用类的静态函数。例如:

#include "lanrenapi.h"

// 获取窗口的句柄
HWND hwnd = (HWND)(this->winId());
setWindowsMousePenetrate(hwnd, true);

解释:

  • lanrenAPI::setWindowsMousePenetrate 是一个静态函数,这意味着它属于类本身,而不是类的特定实例。
  • 当您在另一个 cpp 文件中包含 lanrenapi.h 头文件时,您实际上是在将 lanrenAPI 类的定义引入到该文件。
  • 由于 setWindowsMousePenetrate 是一个静态函数,您可以在不创建 lanrenAPI 类的实例的情况下直接调用它。
  • 因此,您可以在其他 cpp 文件中直接使用 setWindowsMousePenetrate(hwnd, true) 来调用该函数。

注意: 这种调用方式只适用于静态函数,对于非静态函数,您仍然需要创建类的实例才能调用它们。

C++ lanrenAPI 类:设置鼠标穿透功能

原文地址: https://www.cveoy.top/t/topic/nrMo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录