C++ lanrenAPI 类:设置鼠标穿透功能
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)来调用该函数。
注意: 这种调用方式只适用于静态函数,对于非静态函数,您仍然需要创建类的实例才能调用它们。
原文地址: https://www.cveoy.top/t/topic/nrMo 著作权归作者所有。请勿转载和采集!