我有一个使用 Delphi Pro 6 和 DSPACK 直接显示库创建的 DirectShow 过滤器。我在 Windows XP 下运行。我尝试在 DirectFilter 的容器类调用其构造函数时动态创建表单,将 NIL 作为 AOwner 参数(TMyForm.Create(nil) 传递给构造函数,然后调用 Form 的 Show() 方法。表单确实显示但随后似乎停止接收 Windows 消息,因为它从不重新绘制并且不响应输入。作为测试,我然后尝试创建自己的 WndProc() 并覆盖表单的 WndProc()。我的 WndProc() 确实被调用过一次但再也不会.
我猜这是因为我是一个 DLL,而我正在运行的上下文对窗体的窗口消息处理程序并不“友好”;也许与调用它的线程有关。如果有人能给我一个关于如何解决这个问题的提示,或者从 DirectShow 过滤器的上下文中创建持久窗口的正确方法是什么,我将不胜感激。请注意,正如我所说,窗口需要保持不变,因此我无法将其创建为过滤器属性页。
谢谢,罗伯特