未收到注册的窗口消息TaskbarButtonCreated

肖恩·豪(Shane Haw)

我想开始研究Windows 7 TaskBar API。我已经创建了一个基本的MFC对话框项目,但是在注册TaskbarButtonCreated消息之后,它再也不会发送到我的WindowProc。这是我所拥有的:

LRESULT CTaskBarAPITestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    if(message == g_wmTBC)
    {
        AfxMessageBox(_T("Hit the message"));
        //This is never hit
    }
    return CDialogEx::WindowProc(message, wParam, lParam);
}

int CTaskBarAPITestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialogEx::OnCreate(lpCreateStruct) == -1)
        return -1;

    g_wmTBC = RegisterWindowMessage(_T("TaskbarButtonCreated"));
    //This works fine

    return 0;
}

AfxMessageBox从来没有被击中。我也曾尝试将a添加ON_REGISTERED_MESSAGE到我的MESSAGE_MAP方法中,但是该方法也没有被调用。有什么建议?

肖恩·豪(Shane Haw)

原来我需要以下内容:

ChangeWindowMessageFilterEx(AfxGetMainWnd()->GetSafeHwnd(), g_wmTBC, MSGFLT_ALLOW, NULL);
ChangeWindowMessageFilterEx(AfxGetMainWnd()->GetSafeHwnd(), WM_COMMAND, MSGFLT_ALLOW, NULL);

在我的OnInitDialog

编辑:

这是因为我使用提升的特权运行该应用程序,因此默认情况下,除非您使用,否则不会从特权较低的进程接收消息ChangeWindowMessageFilterEx更多信息:ChangeWindowMessageFilterEx文档

微软在github上也有一些示例代码在做同样的事情

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章