Mac64位cocoa环境下如何获取SET控件的句柄?

How to get the handle of SWT control in Mac 64 bit cocoa enviornment?

我有一个基于 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_idFieldjava.lang.reflect.Field

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

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