Winapi MDI应用程序未从Windows 7任务栏接收WM_激活和DWM消息

Winapi MDI应用程序未从Windows 7任务栏接收WM_激活和DWM消息,winapi,windows-7,taskbar,dwm,c++builder-6,Winapi,Windows 7,Taskbar,Dwm,C++builder 6,我有一个用Borland C++Builder 6编写的MDI应用程序(升级到较新版本不是一个选项),我正在使用将MDI子窗口集成到windows 7任务栏中。根据Microsoft的文档,每个MDI窗口都会创建一个代理窗口来接收来自任务栏的消息。我在ITaskbarList3中注册的选项卡确实会出现在任务栏上,代理窗口确实会收到WM\u GETICON、WM\u ACTIVATEAPP、WM\u SYSCOMMAND和WM\u CLOSE消息。但是,它们不会收到任何WM\u ACTIVATE、

我有一个用Borland C++Builder 6编写的MDI应用程序(升级到较新版本不是一个选项),我正在使用将MDI子窗口集成到windows 7任务栏中。根据Microsoft的文档,每个MDI窗口都会创建一个代理窗口来接收来自任务栏的消息。我在
ITaskbarList3
中注册的选项卡确实会出现在任务栏上,代理窗口确实会收到
WM\u GETICON
WM\u ACTIVATEAPP
WM\u SYSCOMMAND
WM\u CLOSE
消息。但是,它们不会收到任何
WM\u ACTIVATE
WM\u dwmsendiconthumbail
、或
WM\u dwmsendicclivepreviewbitmap
消息。如果没有这些,该功能将毫无用处

我认为这可能是一个清单问题(该应用程序确实使用SoftGems tthemeanager),因此我从C++Builder 2010应用程序中提取了一个清单,添加了一个“兼容性”部分,以将Vista和Win7标记为支持的操作系统,并用新清单替换编译的可执行文件中的库存清单。还是不走运


我遗漏了什么吗?

我对Borland的开发产品一无所知。例如,我不知道管理者是什么。。。你能复制这个吗?用一个简单的C或C++应用程序来直接瞄准Win32 API吗?我只是用一个简单的API调用创建了一个简单的应用程序,而且效果不错!因此,无论是Borland的代码还是TthereManager都必须是不兼容的(因为它钩住了一堆东西,使Borland的代码能够正确地处理XP主题)。我会继续挖掘。我从我的主应用程序中删除了tthemanager及其清单,但问题仍然存在,因此它必须是Borland的VCL代码内部的问题。我能够解决它。Borland使用隐藏窗口来控制任务栏按钮,但Vista+不喜欢这样(这是常识,Borland在几年前就提到了这一点),但我不知道这也会对ITaskbarList3选项卡造成如此严重的影响。一旦我从任务栏中删除隐藏窗口并将主窗口强制放到任务栏上(Flip 3D等其他功能也需要主窗口才能正常工作),所有功能都开始正常工作。这一逻辑很大程度上取决于VCL在较新版本中如何处理TApplication.MainFormOnTaskbar属性,然后将其移植到我的项目中。