Visual c++ 未收到已注册的窗口消息TaskbarButtonCreated

Visual c++ 未收到已注册的窗口消息TaskbarButtonCreated,visual-c++,mfc,wndproc,Visual C++,Mfc,Wndproc,我想开始看看Windows7任务栏API。我已经创建了一个基本的MFC对话框项目,但在注册TaskbarButtonCreated消息后,它从未被发送到我的WindowProc。以下是我所拥有的: LRESULT CTaskBarAPITestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { if(message == g_wmTBC) { AfxMessageBox(_T("Hit the

我想开始看看Windows7任务栏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
永远不会被击中。我还尝试在我的
消息映射中添加一个
ON_registed_MESSAGE
,但该方法也没有被调用。有什么建议吗?

我需要以下建议:

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

编辑:

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


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

我看不出你在哪里发布“TaskbarButtonCreated”消息。您已经注册了它,但从未发布过它以便处理。@rrirower据我所知,windows在为应用程序创建任务栏图标时会发布此消息。您是否有参考资料说明为什么需要此消息,最好是官方文档?