你说的有错误:class "vtkWin32OpenGLRenderWindow" 没有成员 "GetGenericRenderWindowId"
时间: 2023-07-21 20:10:53 浏览: 86
基于Win32的面向对象的OpenGL构架
5星 · 资源好评率100%
非常抱歉,我之前提供的代码中存在错误。对于`vtkWin32OpenGLRenderWindow`类,没有直接提供`GetGenericRenderWindowId`方法来获取窗口句柄。在Windows平台上,可以使用`vtkWin32RenderWindowInteractor`类的方法来获取窗口句柄。
请尝试以下修改后的示例代码:
```cpp
#include <vtkSmartPointer.h>
#include <vtkBoxWidget.h>
#include <vtkRenderWindow.h>
#include <vtkWin32RenderWindowInteractor.h>
int main()
{
// 创建一个vtkBoxWidget对象
vtkSmartPointer<vtkBoxWidget> boxWidget =
vtkSmartPointer<vtkBoxWidget>::New();
// ...
// 获取与vtkBoxWidget对象关联的vtkRenderWindowInteractor对象
vtkWin32RenderWindowInteractor* interactor =
vtkWin32RenderWindowInteractor::SafeDownCast(boxWidget->GetInteractor());
// 获取vtkRenderWindow对象
vtkRenderWindow* renderWindow = interactor->GetRenderWindow();
// 获取窗口句柄
HWND hwnd = interactor->GetWindowId();
// 使用窗口句柄进行操作
return 0;
}
```
请注意,上述代码中使用了`SafeDownCast`方法将返回的`vtkRenderWindowInteractor`对象转换为`vtkWin32RenderWindowInteractor`对象,以便使用Windows特定的窗口句柄获取方法。如果您使用的是其他平台,请根据相应的平台API进行修改。
阅读全文