【发布时间】:2013-01-30 22:12:26
【问题描述】:
我正在尝试使用随 Windows 7 引入的ITaskbarList3 界面,以便我可以在任务栏图标中显示冗长任务的任务进度。文档指出,在尝试初始化 ITaskbarList3 组件之前,我应该等待 TaskbarButtonCreated 消息,但我似乎没有收到任何 TaskbarButtonCreated 消息。
这是我目前所拥有的:
我的 .cpp 文件中有一个全局变量来存储 TaskbarButtonCreated 的自定义消息 ID。
static const UINT m_uTaskbarBtnCreatedMsg =
RegisterWindowMessage( _T("TaskbarButtonCreated") );
我创建了一个单独的 WndProc 函数来处理新消息。
void __fastcall TForm1::WndProcExt(TMessage &Message)
{
if(Message.Msg == uTaskbarBtnCreatedMsg && uTaskbarBtnCreatedMsg != 0) {
OnTaskbarBtnCreated();
}
else {
WndProc(Message);
}
}
在我的表单构造函数中,第一行将 WindowProc 属性设置为 WndProcExt 以路由消息。我还尝试在 ChangeWindowMessageFilter 中折腾,以查看 TaskbarButtonCreated 消息是否因某种原因被过滤。
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
WindowProc = WndProcExt;
ChangeWindowMessageFilterEx(Handle, uTaskbarBtnCreatedMsg, MSGFLT_ALLOW, NULL);
...
}
在调试器中,ChangeWindowMessageFilterEx 的返回值始终为真。我还确认我的 WndProcExt 函数接收到各种 Windows 消息,而不是我要查找的消息。 OnTaskbarBtnCreated 函数永远不会被调用。
我错过了一步吗?消息是否在我的消息处理程序准备好之前被过滤掉或发送?
【问题讨论】:
标签: c++ winapi windows-7 taskbar c++builder-2010