如何获得SWT控制在Mac的64位可可enviornment手柄?(How to get the h

2019-10-22 20:02发布

我有一个基于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它与Mac的64位可可库和env工作32位,但。 是否有让手柄上以64位Mac的方式是否有所改变?

Answer 1:

可可的64位的id值是一个long不是int



文章来源: How to get the handle of SWT control in Mac 64 bit cocoa enviornment?