簡體   English   中英

從指針在Objective-C中創建NSWindow?

[英]Create NSWindow in Objective-C from pointer?

假設我正在使用 LWJGL 3 創建一個窗口,它允許我通過GLFWNativeCocoa#glfwGetCocoaWindow(long: window)獲取指向底層 NSWindow 的指針,即:

140616305790880

使用此指針,如果我執行本機調用並將其傳遞給目標 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"選擇器,如上面的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM