2012-06-25 43 views
0

我试图使用Qt Creator中,QT SDK和Windows APIs我的QT应用程序中实现winEventFilter如何使用QCoreApplication :: winEventFilter

声明下面我班上文件来处理Windows消息

bool winEventFilter(MSG * msg, long * result) 
{ 
    if(msg->message == WM_QUERYENDSESSION) 
     DebugLog("shutdown"); 
    else 
     DebugLog("Quit") ;  
} 

我打电话上述方法通过以下方式

MSG * msg; 
long * result; 

winEventFilter(msg, result); 

当我注销或关闭我的电脑从来没有打印记录关机

回答

2

条件msg->message == WM_QUERYENDSESSION永远不会成立,因为您使用单位化指针调用函数(MSG * msg)。

您需要通过一个有意义的msg

但是,这不是你想要实现winEventFilter的方式。

winEventFilterQCoreApplication的一种方法,您应该在QCoreApplication子类中重新实现它。然后它会自动为你调用。

请参阅http://qt-project.org/doc/qt-4.8/qcoreapplication.html#winEventFilter了解更多详情。

+0

我认为它的调用是一个后退功能,所以它会得到味精。好的,我会尽力纠正它。 – JChan

+1

@JChan:啊,我明白了,我想你误解了你应该如何实现它。你需要在你的'QCoreApplication'子类中重新实现它(参见我的编辑)。你*不希望把它作为一个单独的函数来实现,因为它不会被调用。 – houbysoft

+0

谢谢..你教我如何使用API​​ .. – JChan

相关问题