gpt4 book ai didi

java - 在 Objective-C 中从指针创建 NSWindow?

转载 作者:行者123 更新时间:2023-11-30 06:18:23 24 4
gpt4 key购买 nike

假设我正在使用 LWJGL 3 创建一个窗口,它允许我通过 GLFWNativeCocoa#glfwGetCocoaWindow(long: window) 获取指向底层 NSWindow 的指针,即:

140616305790880

使用这个指针,如果我执行 native 调用并将其传递给 Objective-C 函数,是否可以实例化 NSWindow 或获取对其的引用,以便我可以从较低级别操作窗口?

干杯

最佳答案

在 lwjgl 源代码中快速搜索 glfwGetCocoaWindow 会得到以下示例:modules/samples/src/test/java/org/lwjgl/demo/glfw/Gears.java。在示例中,他们没有对 cocoaWindow 处理程序进行直接的 Objective-C 调用,而是对窗口句柄上的选择器执行 msgSend。代码如下:

if ( Platform.get() == Platform.MACOSX ) {
long cocoaWindow = glfwGetCocoaWindow(window);

long objc_msgSend = ObjCRuntime.getLibrary().getFunctionAddress("objc_msgSend");
long contentView = invokePPP(objc_msgSend, cocoaWindow, sel_getUid("contentView"));

invokePPV(objc_msgSend, contentView, sel_getUid("setWantsBestResolutionOpenGLSurface:"), false);

boolean bool = invokePPZ(objc_msgSend, contentView, sel_getUid("wantsBestResolutionOpenGLSurface"));
System.out.println("wantsBestResolutionOpenGLSurface = " + bool);
}

值得尝试使用与“contentView”不同的选择器,如上面的代码所示。

关于java - 在 Objective-C 中从指针创建 NSWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com