我有一个基于Eclipse RCP应用程序中,我需要通过SWT控制处理本地代码画了东西。 我有以下代码得到任何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
和_idField
是java.lang.reflect.Field
。
虽然这非常适用于Windows和Mac它与Mac的64位可可库和env工作32位,但。 是否有让手柄上以64位Mac的方式是否有所改变?