在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++ 中读取位图图像文件时出现问题