gpt4 book ai didi

java - Mac 64位cocoa环境下如何获取AWT控件的句柄?

转载 作者:行者123 更新时间:2023-11-30 03:27:18 25 4
gpt4 key购买 nike

我有一个基于 Eclipse 的 RCP 应用程序,我需要将 SWT 控件句柄传递给 native 代码以在其上绘制某些内容。我有以下代码来获取任何 SWT 控件的句柄:

public static int getControlHandle(Control c){
int handle = 0;
try {
if(_isMACOS){
if(_viewField== null)
_viewField = Control.class.getDeclaredField("view");
Object view = _viewField.get(c);
if(_idField== null) {
Class<?>idClass = Class.forName("org.eclipse.swt.internal.cocoa.id");
_idField = idClass.getDeclaredField("id");
}
handle = _idField.getInt(view);

}
else {
if(_idField== null)
_idField = Control.class.getDeclaredField("handle");
handle = _idField.getInt(c);
}
}
catch(Exception e){

}
return handle;
}

_viewField_idFieldjava.lang.reflect.Field

虽然这适用于 Windows 和 Mac 32 位,但不适用于 Mac 64 位 cocoa 库和环境。64位Mac的句柄获取方式有什么变化吗?

最佳答案

在 Cocoa 64 位上,id 值是 long 而不是 int

关于java - Mac 64位cocoa环境下如何获取AWT控件的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29889540/

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