Qt4版本的实现
方法1:
通过继承QWidget的类中重新实现winEvent接口,以接收在消息参数中传递的本机Windows事件。
bool QWidget::winEvent(MSG *message, long *result)
1
方法2:
通过继承QCoreApplication的类中重新实现winEventFilter接口,以接收在消息参数中传递的本机Windows事件。
bool QCoreApplication::winEventFilter(MSG *msg, long *result)
1
Qt5版本实现
方法1:
通过继承QWidget的类中重新实现winEvent接口,以接收在消息参数中传递的eventType标识的本机平台事件。
bool QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
1
方法2:
通过继承QAbstractNativeEventFilter的类中重新实现nativeEventFilter接口:
bool QAbstractNativeEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *result)
1
并安装到中:

void QCoreApplication::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
1
或安装到:

void QAbstractEventDispatcher::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
1
特别地:不同平台对应的eventType类型有:
平台                事件类型(eventType)            消息类型(message)         结果类型(result)
Windows        “windows_generic_MSG”      MSG *                              LRESULT
macOs           “NSEvent”                              NSEvent *                        无
XCB(Linux)    “xcb_generic_event_t”           xcb_generic_event_t *     无

/******************************************************

继承Qt的基类QAbstractNativeEventFilter

class HHNativeEventFilter : public QAbstractNativeEventFilter
{
protected:
    bool nativeEventFilter(const QByteArray &eventType, void *message, long *)
    {
        if (eventType == "windows_generic_MSG"
                || eventType == "windows_dispatcher_MSG")
        {
            PMSG msg = static_cast<PMSG>(message);
            if(msg->message == WM_CLOSE )
            {
                qApp->exit();
            }
        }
        return false;
    }
};
利用QApplication注册类对象

app.installNativeEventFilter(new NativeEventFilter);

Qt-捕获Windows消息相关推荐

  1. 【Qt】Qt之进程间通信(Windows消息)【转】

    简述 通过上一节的了解,我们可以看出进程通信的方式很多,今天分享下如何利用Windows消息机制来进行不同进程间的通信. 简述 效果 发送消息 自定义类型与接收窗体 发送数据 接收消息 设置标题 重写 ...

  2. Windows消息备忘录

    Windows 常用消息大全 表A-1  Windows消息分布 消息范围 说 明 0 - WM_USER – 1 系统消息 WM_USER - 0x7FFF 自定义窗口类整数消息 WM_APP - ...

  3. Windows消息机制学习笔记(二)—— 窗口与线程

    Windows消息机制学习笔记(二)-- 窗口与线程 要点回顾 消息从哪里来? 实验一:Spy++捕获消息 实验二:消息捕获 消息到哪里去? 窗口在哪? 实验:分析CreateWindowExW 窗口 ...

  4. Windows消息机制学习笔记(一)—— 消息队列

    Windows消息机制学习笔记(一)-- 消息队列 基本概念 实验一:使用代码画出最简单窗口 第一步:编译并运行以下代码 第二步:查看运行结果 第三步:使用其它窗口对其进行覆盖,观察效果 总结 消息队 ...

  5. 详谈Windows消息循环机制

    一直对windows消息循环不太清楚,今天做个详细的总结,有说错的地方,请务必指出. 用VS2017新建一个win32 Application的默认代码如下: 这里有几个概念,容易混淆: 1.系统: ...

  6. Windows消息循环机制详细概述

    首先来了解几个基本概念: 消息:在了解什么是消息先来了解什么是事件.事件可分为几种,由输入设备触发的,比如鼠标键盘等等.由窗体控件触发的,比如button控件,file菜单等.还有就是来自Window ...

  7. Windows 消息ID及定义大全

    表A-1  Windows消息分布 消息范围 说 明 0 - WM_USER – 1 系统消息 WM_USER - 0x7FFF 自定义窗口类整数消息 WM_APP - 0xBFFF 应用程序自定义消 ...

  8. Qt:Windows编程—代码注入

    前言 ​ 这里所说的代码注入和上篇的DLL注入有类似之处.DLL文件的注入与卸载在上篇中都完成了,整个注入与卸载的过程其实就是让远程线程执行一次LoadLibrary函数或者FreeLibrary函数 ...

  9. Qt:Qt使用WM_COPYDATA消息进行进程通信

    Qt使用WM_COPYDATA消息进行进程通信 如题,Qt使用WM_COPYDATA消息进行进程通信,这次我们使用windows相关api,来实现不同的 Qt窗口进程间的通信,使用的window的 W ...

  10. Windows GUI代码与Windows消息问题调试利器

    Windows GUI代码与Windows消息问题调试利器 记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用.同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别, ...

最新文章

  1. 卷积:kernel size/padding/stride
  2. Python全栈开发,Day1 - Python基础1
  3. 盘点2020中国IT上市企业100强,贵司上榜了吗?
  4. 新建指令避开 Avalon 的 ms-duplex 的问题
  5. 推荐一款Python开源库,技术人必备的造数据神器!
  6. 如何在SAP云平台上创建Redis实例
  7. 如何讲页面打入jar包中_如何把我的Java程序变成exe文件?
  8. 小程序如何将wx.request里的数据传出去
  9. Linux内核启动去掉企鹅,修改linux内核kernel开机logo(小企鹅)
  10. java开发者工具开源版_6种开源工具可帮助教育工作者保持井井有条
  11. PAT乙级(1005 继续(3n+1)猜想)
  12. RNN 循环神经网络系列 5: 自定义单元
  13. 容易被PHP程序员忽视的几个要点
  14. sublime text3怎么运行python代码_Sublime Text3配置在可交互环境下运行python快捷键
  15. docker装LibreELEC_J3455安装PVE折腾记录(直通GPU至Libreelec当HTPC+黑群+OMV)20190703更新简易版...
  16. mysql 日志文件_mysql日志文件在哪
  17. 计算机六个方面的领域,计算机的应用领域分为哪六个方面
  18. DAC数模转换/ADC模数转换
  19. 二、使用Stream流的方式完成过滤操作
  20. LinkIQ 福禄克全新的以太网电缆,网络和PoE测试仪LIQ-100 LIQ-KIT

热门文章

  1. win7功能找不到信息服务器,win7系统找不到Internet信息服务的解决方法
  2. matlab xlsread参数_利用MATLAB批量完成科研数据处理
  3. sparkStreaming+kafka SparkException: java.nio.channels.ClosedChannelException异常报错
  4. 第一章 初始MySQL
  5. onnx 测试_ONNX 现场演示教程
  6. linux卸载已安装的java_Linux 中如何卸载已安装的软件(转载)
  7. mysql的root用户密码_MySQL的root用户密码忘了 , 该怎么办?
  8. java 数字表示什么意思是什么,读取Java字节码指令:数字是什么意思?
  9. python字典dragonloot_Python 字典与列表使用实例
  10. android litepal可以指定存储目录吗,Android数据库LitePal的基本用法详解