0

WM_POWERBROADCASTを処理したいATLアプリがあります。MSG_MAPでハンドラーを定義したCMainDlg(CAxDialogImpl)があります。

BEGIN_MSG_MAP(CMainDlg)
    ...
    MESSAGE_HANDLER(WM_POWERBROADCAST, OnPowerChange)
    ...
END_MSG_MAP()

ただし、電源設定を変更したり、マシンをスリープ状態にしたりするなど、ハンドラーを呼び出す必要がある処理を実行しても、ハンドラーは呼び出されません。

何が起こっているのか、そしてこれを修正する方法について何かアイデアはありますか?何らかの理由で、CMainDlgは電源イベントの通知を受け取りませんか?

4

3 に答える 3

0

パワーイベントを受信するために登録しましたか?

于 2010-03-08T21:12:27.163 に答える
0

ダイアログがトップレベルウィンドウ(WS_POPUPスタイル)ではないようです。

WTL AppWizardの非モーダルダイアログアプリでテストしたところ、ACのプラグ/アンプラグでWM_POWERBROADCASTが(登録なしで)受信されました。

于 2010-03-09T11:50:53.257 に答える
0

上記の回答に追加するには、Spy ++ツールを使用して、関心のあるメッセージが最初にアプリケーションに投稿されていることを確認することをお勧めします。また、それらがどのウィンドウに投稿されているか、およびこのメッセージを待っているのが自分のウィンドウであるかどうかも確認できます。

于 2011-09-27T17:35:57.883 に答える