Qt5_自定义处理Windows消息函数
ZC:(1)、“#include <QAbstractNativeEventFilter>”,(2)、貌似 返回True(意思是 处理过了) 返回False(意思是还需要继续处理)
1、参考网址:(ZC: 自定义Windows消息处理)
http://bbs.csdn.net/topics/391054195
http://blog.csdn.net/zhangjinqing1234/article/details/49903613
2、关键字:
类QAbstractNativeEventFilter,虚函数nativeEventFilter
3、两种方式:
3.1、窗口类 直接继承 类QAbstractNativeEventFilter,实现 虚函数nativeEventFilter
ZC: 该方式 我没有测试
class MainWindow : public QMainWindow, public QAbstractNativeEventFilter
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow(); virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE
{
//...
return false;
}; private:
Ui::MainWindow *ui;
};
ZC:(20180512)尝试下来,是可以的,但是 在 main(...)函数中还是要安装 事件过滤器,如下:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show(); // 没有这一句的话,不会进行 事件过滤
a.installNativeEventFilter(&w);// 注意,不是“a.installEventFilter(w);”,少了 "Native" return a.exec();
}
3.2、自定义类 继承类QAbstractNativeEventFilter,实现 虚函数nativeEventFilter,并 installNativeEventFilter
ZC: 该方式 我测试过,是OK的,内容记录下来:
3.2.1、自定义类 继承类QAbstractNativeEventFilter,实现 虚函数nativeEventFilter
classNativeEventFilterZ.h :
#ifndef CLASSNATIVEEVENTFILTERZ_H
#define CLASSNATIVEEVENTFILTERZ_H #include <QDebug>
#include <qabstractnativeeventfilter.h> #include <windows.h>
#pragma comment(lib, "user32.lib") #define WM_WinCreate WM_USER+1000 class NativeEventFilterZ : public QAbstractNativeEventFilter
{
//Q_OBJECT // ZC: 这个不需要...
public:
virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE
{
MSG* pMsg = reinterpret_cast<MSG*>(message);
//if(pMsg->message == WM_COPYDATA)
//{
// qDebug()<<"MainWindow windows system message WM_COPYDATA";
//}
//qDebug() << "pMsg->message : " << pMsg->message;
if(pMsg->message == WM_WinCreate)
{
void* p = NULL;
qDebug() << "WM_WinCreate";
return true;
}
return false;
}
}; #endif // CLASSNATIVEEVENTFILTERZ_H
3.2.2、installNativeEventFilter :
main.cpp :
#include "mainwindow.h"
#include <QApplication> #include "classNativeEventFilterZ.h"
#include <QDebug> #include <Windows.h> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
qDebug() << "MainWindow.winId : " << w.winId() << " , " << GetCurrentThreadId(); NativeEventFilterZ nativeEventFilterZ;
a.installNativeEventFilter(&nativeEventFilterZ); // ZC: 这里,注意该函数中有"Native"
return a.exec();
}
4、
5、
Qt5_自定义处理Windows消息函数的更多相关文章
- C# 收发和处理自定义的WINDOWS消息
C# 发送.接收和处理自定义的WINDOWS消息 转载地址:http://blog.chinaunix.net/uid-24427209-id-2608350.html 为了程序启动后自动执行主函数, ...
- 易语言调用windows消息函数
1.SendMessageCallbackA的调用方法 .版本2 .DLL命令 发送消息返回_, 整数型, "user32.dll", "SendMessageCallb ...
- 结合windows消息系统理解C#中WndProc函数和DefWndProc函数
Windows消息系统由3部分组成: 1.消息队列.Windows应用程序的消息是由Windows统一在一个消息队列中管理的. 2.消息循环.应用程序从Windows消息队列中获得自己 ...
- C#中如何截取Windows消息来触发自定义事件
原文 C#中如何截取Windows消息来触发自定义事件 在c#windows开发中,我们常常会遇到拦截windows消息,来触发某个特定任务的问题. 由于目前使用c#的开发人员非常多,而且大多数c#程 ...
- TWinControl的刷新过程(5个非虚函数,4个覆盖函数,1个消息函数,默认没有双缓冲,注意区分是TCustomControl还是Windows原生封装控件,执行流程不一样)
前提条件:要明白在TWinControl有以下四个函数的存在,注意都是虚函数: procedure Invalidate; override;procedure Update; override;pr ...
- windows消息机制详解(转载)
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.消息本身是作为一个记录传递给应用程序的 ...
- Windows消息机制详解
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用 ...
- Windows消息大全(转)
原链接地址: http://www.cnblogs.com/icebutterfly/archive/2011/08/05/2128864.html 表A-1 Windows消息分布 消息范围说 明 ...
- 【转】windows消息和消息队列详解
转载出处:http://blog.csdn.net/bichenggui/article/details/4677494 windows消息和消息队列 与基于MS - DOS的应用程序不同,Wind ...
随机推荐
- Java编写验证码
Java后台代码(CheckCodeServlet.java) package web; import java.awt.Color; import java.awt.Font; import jav ...
- K好数
有点坑 在他这里 0不算一位数 #include <iostream> #include <cstdio> #include <string.h> using na ...
- linux脚本-判断进程是否存在,从而可以做预警处理..
count=`ps -ef | grep Seeyon | grep -v "grep" | wc -l` echo $count if [ $count -gt 0 ]; the ...
- 比特币、莱特币钱包下载和把数据迁移到C盘以外其他盘
比特币是目前最热门和价格最高的虚拟币,国内外多个平台可以进行交易,有些商家可以用比特币进行支付有些国家可以在ATM取款. Bitcoin-Qt就是最早的比特币客户端,构建了比特币的骨干网络,具有高度的 ...
- silverlight数据绑定
控件绑定 <Grid x:Name="LayoutRoot"> <StackPanel> <ScrollBar x:Name="bar&qu ...
- Linux用root强制踢掉已登录用户
首先使用w命令查看所有在线用户: [root@VM_152_184_centos /]# w 20:50:14 up 9 days, 5:58, 3 users, load average: 0.21 ...
- CentOS安装mysql并配置远程访问
最近上班挺无聊,每天就是不停的重启重启重启,然后抓log.于是有事儿没事儿的看卡闲书,搞搞其他事情. 但是,公司笔记本装太多乱其八糟的东西也还是不太好. 于是,想到了我那个当VPN server的VP ...
- String和StringBuffer和StringBuilder
String类 Java语言中用String类代表不可变的字符串,它是由任意多个字符组成的序列.程序中需要存储大量的信息时,一般都用String对象. 1.字符串初始化 JavaSE API为字符串对 ...
- nginx服务器的rewrite功能
nginx编译的时候默认是把rewrite功能编辑进去的,但是因为rewrite需要使用正则表达式,因此需要安装pcre依赖包. yum install -y pcre pcre-install re ...
- python集合set{ }、集合函数及集合的交、差、并
通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...