Visual c++ 未收到已注册的窗口消息TaskbarButtonCreated
我想开始看看Windows7任务栏API。我已经创建了一个基本的MFC对话框项目,但在注册TaskbarButtonCreated消息后,它从未被发送到我的WindowProc。以下是我所拥有的: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
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);
在myOnInitDialog
中
编辑:
这是因为我使用提升的权限运行应用程序,因此默认情况下,除非您使用ChangeWindowMessageFilterEx
,否则不会从较低权限的进程接收消息。更多信息:
微软也有一些示例代码做同样的事情我看不出你在哪里发布“TaskbarButtonCreated”消息。您已经注册了它,但从未发布过它以便处理。@rrirower据我所知,windows在为应用程序创建任务栏图标时会发布此消息。您是否有参考资料说明为什么需要此消息,最好是官方文档?