本文以简单的例子实现windows平台下的过滤窗口最小化事件功能。
例子:
代码语言:javascript复制#include <QApplication>
#include <QWidget>
#include <QAbstractNativeEventFilter>
#include <windows.h>
class NativeFilter : public QAbstractNativeEventFilter
{
bool nativeEventFilter(const QByteArray &eventType,
void *message,
long *result)
{
MSG *msg = static_cast<MSG *>(message);
/* 过滤点击最小化按钮触发的最小化事件 */
if (msg->message == WM_NCLBUTTONDOWN && msg->wParam == HTREDUCE)
return true;
/* 过滤点击任务栏图标触发最小化事件 */
if (msg->message == WM_SYSCOMMAND && msg->wParam == SC_MINIMIZE)
return true;
return false;
}
};
int main(int argc, char **argv)
{
QApplication a(argc, argv);
a.installNativeEventFilter(new NativeFilter);
/* QWidget最小化按钮无效化 */
QWidget w;
w.show();
return a.exec();
}