0

我有一个 ATL 应用程序,我想在其中处理WM_POWERBROADCAST。我有一个 CMainDlg (CAxDialogImpl),我在其 MSG_MAP 中定义了处理程序。

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

但是,当我做一些应该调用它的事情时,不会调用处理程序,例如更改电源设置或让机器进入睡眠状态。

关于可能发生的事情以及如何解决这个问题的任何想法?出于某种原因,CMainDlg 是否没有收到电源事件的通知?

4

3 回答 3

0

要添加到上面的答案,您可能需要使用 Spy++ 工具来确保首先将感兴趣的消息发布到您的应用程序。您还将看到它们被发布到哪些窗口,以及您正在等待此消息的窗口是否是您的窗口。

于 2011-09-27T17:35:57.883 回答
0

我怀疑您的对话框不是顶级窗口(WS_POPUP 样式)。

刚刚使用 WTL AppWizard 非模态对话框应用程序测试,在 AC 插入/拔出时收到 WM_POWERBROADCAST(没有任何注册)。

于 2010-03-09T11:50:53.257 回答
0

您是否注册接收电源事件?

于 2010-03-08T21:12:27.163 回答