将查看器与PCL下的现有窗口关联

Associate a viewer to an existing window under PCL

本文关键字:窗口 关联 PCL      更新时间:2023-10-16

我使用PCL在Windows下显示点云。CloudViewer和PCLVisualizer类可用于此目的。但是当您实例化它们时,它们会创建自己的窗口(通过VTK)。因为我想在一个完整的GUI集成显示窗口,我正在寻找一种方法来直接显示到一个现有的窗口,可能通过传递窗口句柄。该窗口不是OpenGL。

这可能吗?有什么提示吗?

看来我找到解决办法了。

几个Web帖子建议更改查看器的RenderWindow的父窗口,这可以通过

完成
viewer->getRenderWindow()->SetParentId(hWnd);

无论如何,这似乎没有效果。但它启发了我用Windows函数来表示

SetParent((HWND)viewer->getRenderWindow()->GetGenericWindowId(), hWnd);

这确实使查看器成为我的窗口的子窗口,而它继续正常工作。其他样式标志可以使用SetWindowLong进行调整。

为了以防万一,现在我还保留了第一条语句。这似乎并不麻烦。