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 ...
随机推荐
- 树莓派3B新版raspbian系统换国内源
树莓派新版系统更换了专门优化过的桌面环境PIXEL,正好手头有个闲置的TF卡决定刷上新版系统玩玩.下载刷系统过程很多教程页很简单.插卡,上电开机,释放卡上的剩余空间都很正常,因为树莓派官方源访问很慢下 ...
- 删除排序数组中的重复数字 II
题目连接 http://www.lintcode.com/zh-cn/problem/remove-duplicates-from-sorted-array-ii/ 题目大意 跟进“删除重复数字”: ...
- liferay6.1.2的API
http://docs.liferay.com/portal/6.1/javadocs/overview-summary.html
- Javascript-逻辑判断或(&&)练习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ExtJs中XTemplate使用(转)
转自http://www.studyofnet.com/news/408.html 本文导读:XTemplate是Ext.Template扩展的新类,它支持高级功能的模板类,如自动数组输出.条件判断. ...
- bzoj4561: [JLoi2016]圆的异或并 圆的扫描线
地址:http://www.lydsy.com/JudgeOnline/problem.php?id=4561 题目: 4561: [JLoi2016]圆的异或并 Time Limit: 30 Sec ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON HomMat2dRotate1
zw版[转发·台湾nvp系列Delphi例程]HALCON HomMat2dRotate1 procedure TForm1.Button1Click(Sender: TObject);var img ...
- jQuery 遍历 - eq() 方法 查找当前元素
jQuery 遍历 - eq() 方法 if(data[i].status !='已送达'){ $('.w-beget').eq(i).attr('disabled','disabled'); }
- vm #set、日期截取、#foreach&#if
<div class="form_row"> <label>状态:</label> #if ($!cp.runState =='t') #set ...
- python函数—形参、实参、位置参数、关键字参数
1.通过def function_name([parameter]): 定义,函数一遇到return即结束运行.如果函数没有定义返回值,则返回None,如果定义了一个返回值,则返回该对象,如果一个re ...