1

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);

コンピューターをログオフまたはシャットダウンすると、ログのシャットダウンが出力されません

4

1 に答える 1

3

msg->message == WM_QUERYENDSESSION初期化されたポインター ( ) を使用して関数を呼び出しているため、条件が true になることはありませんMSG * msg

意味のある を渡す必要がありますmsg

ただし、これは winEventFilter を実装する方法ではありません。

winEventFilterサブクラスQCoreApplicationで再実装して使用する必要がある のメソッドです。QCoreApplicationその後、自動的に呼び出されます。

詳細については、http: //qt-project.org/doc/qt-4.8/qcoreapplication.html#winEventFilterを参照してください。

于 2012-06-25T23:05:18.780 に答える