我正在尝试使用QT Creator,QT SDK和Windows API在我的QT应用程序中实现winEventFilter
在我的班级档案中宣布以下内容
bool winEventFilter( MSG * msg, long * result )
{
if( msg->message == WM_QUERYENDSESSION)
DebugLog("shutdown");
else
DebugLog("Quit") ;
}
我按以下方式调用上述方法
MSG * msg;
long * result;
winEventFilter(msg, result);
当我注销或关闭计算机时,它永远不会打印日志关闭
答案 0 :(得分:3)
条件msg->message == WM_QUERYENDSESSION
将永远不会成立,因为您使用单位指针(MSG * msg
)调用该函数。
您需要传递有意义的msg
。
但是,这不是您想要实现winEventFilter的方式。
winEventFilter
是QCoreApplication
的一种方法,您应该在QCoreApplication
子类中重新实现它。然后它将自动为您调用。
有关详细信息,请参阅http://qt-project.org/doc/qt-4.8/qcoreapplication.html#winEventFilter。