[英]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.