Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mahuifa
QMDemo
提交
4ef6b7b3
Q
QMDemo
项目概览
mahuifa
/
QMDemo
通知
1
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
QMDemo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4ef6b7b3
编写于
3月 21, 2023
作者:
mahuifa
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:增加Windows下鼠标中键按下、功能键前进后退的事件
上级
8e35c968
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
62 addition
and
4 deletion
+62
-4
FunctionalModule/MouseKeyEvent/GlobalMouseKey/globalmouseevent_win.cpp
...ule/MouseKeyEvent/GlobalMouseKey/globalmouseevent_win.cpp
+39
-2
FunctionalModule/MouseKeyEvent/MouseKeyEvent.pro
FunctionalModule/MouseKeyEvent/MouseKeyEvent.pro
+1
-1
FunctionalModule/MouseKeyEvent/widget.cpp
FunctionalModule/MouseKeyEvent/widget.cpp
+22
-1
未找到文件。
FunctionalModule/MouseKeyEvent/GlobalMouseKey/globalmouseevent_win.cpp
浏览文件 @
4ef6b7b3
...
...
@@ -9,10 +9,11 @@
static
HHOOK
g_hook
=
nullptr
;
/**
* @brief 处理鼠标事件的回调函数,由于这不是一个成员函数,所以需要通过中间单例类
GlobalM
ouseEvent将鼠标信号传递出来
* @brief 处理鼠标事件的回调函数,由于这不是一个成员函数,所以需要通过中间单例类
m
ouseEvent将鼠标信号传递出来
* 具体内容看https://learn.microsoft.com/zh-cn/previous-versions/windows/desktop/legacy/ms644986(v=vs.85)
* @param nCode 挂钩过程用于确定如何处理消息的代码。如果nCode小于零,则挂钩过程必须将消息传递给 CallNextHookEx 函数而不进行进一步处理,并且应返回CallNextHookEx返回的值
* @param wParam 信号类型:WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE、WM_MOUSEWHEEL、WM_MOUSEHWHEEL、WM_RBUTTONDOWN 或WM_RBUTTONUP(鼠标中键点击和拓展按还没找到怎么弄)。
* @param wParam 信号类型:WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE、WM_MOUSEWHEEL、WM_MOUSEHWHEEL、WM_RBUTTONDOWN 或WM_RBUTTONUP。
* 其它扩展按键可以看https://learn.microsoft.com/en-us/windows/win32/inputdev/mouse-input
* @param lParam MSLLHOOKSTRUCT结构体指针
* @return
*/
...
...
@@ -44,6 +45,42 @@ LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
emit
GlobalMouseEvent
::
getInstance
()
->
wheelEvent
(
new
QWheelEvent
(
point
,
delta
,
Qt
::
MiddleButton
,
Qt
::
NoModifier
));
break
;
}
case
WM_MBUTTONUP
:
// 鼠标中键释放
emit
GlobalMouseEvent
::
getInstance
()
->
mouseEvent
(
new
QMouseEvent
(
QEvent
::
MouseButtonRelease
,
point
,
Qt
::
MiddleButton
,
Qt
::
MiddleButton
,
Qt
::
NoModifier
));
break
;
case
WM_MBUTTONDOWN
:
// 鼠标中键按下
emit
GlobalMouseEvent
::
getInstance
()
->
mouseEvent
(
new
QMouseEvent
(
QEvent
::
MouseButtonPress
,
point
,
Qt
::
MiddleButton
,
Qt
::
MiddleButton
,
Qt
::
NoModifier
));
break
;
case
WM_XBUTTONDOWN
:
// 鼠标功能键按下
{
MSLLHOOKSTRUCT
*
msll
=
reinterpret_cast
<
MSLLHOOKSTRUCT
*>
(
lParam
);
int
Button
=
GET_XBUTTON_WPARAM
(
msll
->
mouseData
);
switch
(
Button
)
{
case
XBUTTON1
:
// 后退
emit
GlobalMouseEvent
::
getInstance
()
->
mouseEvent
(
new
QMouseEvent
(
QEvent
::
MouseButtonPress
,
point
,
Qt
::
XButton1
,
Qt
::
XButton1
,
Qt
::
NoModifier
));
break
;
case
XBUTTON2
:
// 前进
emit
GlobalMouseEvent
::
getInstance
()
->
mouseEvent
(
new
QMouseEvent
(
QEvent
::
MouseButtonPress
,
point
,
Qt
::
XButton2
,
Qt
::
XButton2
,
Qt
::
NoModifier
));
break
;
}
break
;
}
case
WM_XBUTTONUP
:
// 鼠标功能键释放
{
MSLLHOOKSTRUCT
*
msll
=
reinterpret_cast
<
MSLLHOOKSTRUCT
*>
(
lParam
);
int
Button
=
GET_XBUTTON_WPARAM
(
msll
->
mouseData
);
switch
(
Button
)
{
case
XBUTTON1
:
emit
GlobalMouseEvent
::
getInstance
()
->
mouseEvent
(
new
QMouseEvent
(
QEvent
::
MouseButtonRelease
,
point
,
Qt
::
XButton1
,
Qt
::
XButton1
,
Qt
::
NoModifier
));
break
;
case
XBUTTON2
:
emit
GlobalMouseEvent
::
getInstance
()
->
mouseEvent
(
new
QMouseEvent
(
QEvent
::
MouseButtonRelease
,
point
,
Qt
::
XButton2
,
Qt
::
XButton2
,
Qt
::
NoModifier
));
break
;
}
break
;
}
default:
break
;
}
...
...
FunctionalModule/MouseKeyEvent/MouseKeyEvent.pro
浏览文件 @
4ef6b7b3
...
...
@@ -30,7 +30,7 @@ include($$PWD/GlobalMouseKey/GlobalMouseKey.pri)
INCLUDEPATH
+=
$$
PWD
/
GlobalMouseKey
#
定义程序版本号
VERSION
=
1.
6
.
2
VERSION
=
1.
8
.
0
DEFINES
+=
APP_VERSION
=
\\\
"$$VERSION\\\"
contains
(
QT_ARCH
,
i386
){
#
使用
32
位编译器
...
...
FunctionalModule/MouseKeyEvent/widget.cpp
浏览文件 @
4ef6b7b3
...
...
@@ -54,6 +54,16 @@ void Widget::on_mouseEvent(QMouseEvent* event)
but
=
"中键"
;
break
;
}
case
Qt
::
XButton1
:
{
but
=
"功能键【后退】"
;
break
;
}
case
Qt
::
XButton2
:
{
but
=
"功能键【前进】"
;
break
;
}
default:
{
but
=
"未知"
;
...
...
@@ -70,7 +80,7 @@ void Widget::on_mouseEvent(QMouseEvent* event)
ui
->
textEdit
->
append
(
str
);
break
;
}
case
QEvent
::
MouseButtonRelease
:
// 鼠标
右键
抬起
case
QEvent
::
MouseButtonRelease
:
// 鼠标抬起
{
QString
but
;
switch
(
event
->
button
())
...
...
@@ -90,6 +100,16 @@ void Widget::on_mouseEvent(QMouseEvent* event)
but
=
"中键"
;
break
;
}
case
Qt
::
XButton1
:
{
but
=
"功能键【后退】"
;
break
;
}
case
Qt
::
XButton2
:
{
but
=
"功能键【前进】"
;
break
;
}
default:
{
but
=
"未知"
;
...
...
@@ -106,6 +126,7 @@ void Widget::on_mouseEvent(QMouseEvent* event)
delete
event
;
// 使用完成后记得delete
}
/**
* @brief 全局鼠标滚轮事件
* @param event
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录