在Java窗口中嵌入c++ opengl窗口

Posted

技术标签:

【中文标题】在Java窗口中嵌入c++ opengl窗口【英文标题】:Embed c++ opengl window in Java window 【发布时间】:2012-08-22 07:49:43 【问题描述】:

我正在尝试在 java 窗口中嵌入一个 c++ opengl 窗口。我可以通过套接字将 opengl 窗口的 HWND 发送到 java 窗口。我宁愿不使用 JNI,因为我想要 2 个单独的进程(为什么不重要)。我进行了搜索,发现这可以通过使用 User32 的函数 SetParent(HWND childWindow, HWND parentWindow) 来实现。但是,我无法正确使用它或找不到使用 User32 的步骤。所以这可能是与Embed HWND (Window Handle) in a JPanel 相关的问题,这正是我想要做的,但我无法重现解决方案,因为我无法使用 User32(无法解决),即使我进行了以下导入: 导入 com.sun.jna.Library; 导入 com.sun.jna.Native; 导入 com.sun.jna.Platform; 导入 com.sun.jna.Pointer;

我也无法使用 WComponentPeer,但我没有对该主题进行太多搜索。

提前致谢

【问题讨论】:

【参考方案1】:

您需要来自 JNA 的 platform.jar 的 User32 接口映射。

请参阅these notes 了解开始。

【讨论】:

好吧,我已经设法找到一种方法来获取画布的 HWND,我可能会在其中嵌入 c++ opengl 窗口。现在我在尝试将表示指向 c++ opengl 窗口的指针的字符串转换为 java 中的实际 Windef.HWND 时遇到问题。有什么想法吗? 假设你有String s="0x01234",你可以做Integer.parseInt(s, 16)。虽然如果您用于获取指针值的方法不允许您捕获原始的 32 位或 64 位值,我不确定我是否会相信它。您可以在给定Pointer 值的情况下从头创建HWND

以上是关于在Java窗口中嵌入c++ opengl窗口的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 glfw 窗口上没有使用 opengl 显示位图图像?在 C++ 中读取位图图像文件时出现问题

如何使用 c++ 和 opengl 在 mac 中创建窗口?

更新窗口显示 OpenGL/GLUT C++

OpenGL C++(制作简单窗口时抛出错误)

在 C++ 中创建 GLFW OpenGL 窗口时遇到问题

从 C++ 嵌入式解释器捕获 python 窗口输出