⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 access.cpp

📁 Wxpython Implemented on Windows CE, Source code
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                childAccessible->Release();
                return stdChildAccessible;
            }
            else
            {
                pDispatch->Release();
            }
        }
    }

#if 0
    {
        // Loop until we find the right id
        long nChildren = 0;
        this->get_accChildCount(& nChildren);

        int i;
        for (i = 0; i < nChildren; i++)
        {
            long obtained = 0;
            VARIANT var;
            VariantInit(& var);
            var.vt = VT_I4;
            if (S_OK == AccessibleChildren(this, i, 1, & var, &obtained))
            {
                if (var.lVal == id)
                {
                    VariantInit(& var);
                    var.vt = VT_DISPATCH;
                    if (S_OK == AccessibleChildren(this, i, 1, & var, &obtained))
                    {
                        IAccessible* childAccessible = NULL;
                        if (var.pdispVal->QueryInterface(IID_IAccessible, (LPVOID*) & childAccessible) == S_OK)
                        {
                            var.pdispVal->Release();
                            return childAccessible;
                        }
                        else
                        {
                            var.pdispVal->Release();
                        }
                    }
                }
                break;
            }
        }
    }
#endif
    return NULL;
}

// Gets the IAccessible interface for the given child or object.
// Call Release if this is non-NULL.
IAccessible* wxIAccessible::GetChildAccessible(int id)
{
    if (id == 0)
    {
        IAccessible* obj = this;

        obj->AddRef();
        return obj;
    }
    else
    {
        VARIANT var;
        VariantInit(& var);
        var.vt = VT_I4;
        var.lVal = id;
        IDispatch* pDispatch = NULL;
        if (S_OK == get_accChild ( var, & pDispatch))
        {
            IAccessible* childAccessible = NULL;
            if (pDispatch->QueryInterface(IID_IAccessible, (LPVOID*) & childAccessible) == S_OK)
            {
                pDispatch->Release();
                return childAccessible;
            }
            else
            {
                pDispatch->Release();
            }
        }
    }
    return NULL;
}

// ----------------------------------------------------------------------------
// wxAccessible implementation
// ----------------------------------------------------------------------------

// ctors

// common part of all ctors
void wxAccessible::Init()
{
    m_pIAccessibleStd = NULL;
    m_pIAccessible = new wxIAccessible(this);
    m_pIAccessible->AddRef();
}

wxAccessible::wxAccessible(wxWindow* win)
            : wxAccessibleBase(win)
{
    Init();
}

wxAccessible::~wxAccessible()
{
    m_pIAccessible->Release();
    if (m_pIAccessibleStd)
        ((IAccessible*)m_pIAccessibleStd)->Release();
}

// Gets or creates a standard interface for this object.
void* wxAccessible::GetIAccessibleStd()
{
    if (m_pIAccessibleStd)
        return m_pIAccessibleStd;

    if (GetWindow())
    {
        HRESULT retCode = ::CreateStdAccessibleObject((HWND) GetWindow()->GetHWND(),
                OBJID_CLIENT, IID_IAccessible, (void**) & m_pIAccessibleStd);
        if (retCode == S_OK)
            return m_pIAccessibleStd;
        else
        {
            m_pIAccessibleStd = NULL;
            return NULL;
        }
    }
    return NULL;
}

// Sends an event when something changes in an accessible object.
void wxAccessible::NotifyEvent(int eventType, wxWindow* window, wxAccObject objectType,
                        int objectId)
{
    ::NotifyWinEvent((DWORD) eventType, (HWND) window->GetHWND(),
        (LONG) objectType, (LONG) objectId);
}

// Utilities

// Convert to Windows role
int wxConvertToWindowsRole(wxAccRole wxrole)
{
    switch (wxrole)
    {
    case wxROLE_SYSTEM_ALERT:
        return ROLE_SYSTEM_ALERT;
    case wxROLE_SYSTEM_ANIMATION:
        return ROLE_SYSTEM_ANIMATION;
    case wxROLE_SYSTEM_APPLICATION:
        return ROLE_SYSTEM_APPLICATION;
    case wxROLE_SYSTEM_BORDER:
        return ROLE_SYSTEM_BORDER;
    case wxROLE_SYSTEM_BUTTONDROPDOWN:
        return ROLE_SYSTEM_BUTTONDROPDOWN;
    case wxROLE_SYSTEM_BUTTONDROPDOWNGRID:
        return ROLE_SYSTEM_BUTTONDROPDOWNGRID;
    case wxROLE_SYSTEM_BUTTONMENU:
        return ROLE_SYSTEM_BUTTONMENU;
    case wxROLE_SYSTEM_CARET:
        return ROLE_SYSTEM_CARET;
    case wxROLE_SYSTEM_CELL:
        return ROLE_SYSTEM_CELL;
    case wxROLE_SYSTEM_CHARACTER:
        return ROLE_SYSTEM_CHARACTER;
    case wxROLE_SYSTEM_CHART:
        return ROLE_SYSTEM_CHART;
    case wxROLE_SYSTEM_CHECKBUTTON:
        return ROLE_SYSTEM_CHECKBUTTON;
    case wxROLE_SYSTEM_CLIENT:
        return ROLE_SYSTEM_CLIENT;
    case wxROLE_SYSTEM_CLOCK:
        return ROLE_SYSTEM_CLOCK;
    case wxROLE_SYSTEM_COLUMN:
        return ROLE_SYSTEM_COLUMN;
    case wxROLE_SYSTEM_COLUMNHEADER:
        return ROLE_SYSTEM_COLUMNHEADER;
    case wxROLE_SYSTEM_COMBOBOX:
        return ROLE_SYSTEM_COMBOBOX;
    case wxROLE_SYSTEM_CURSOR:
        return ROLE_SYSTEM_CURSOR;
    case wxROLE_SYSTEM_DIAGRAM:
        return ROLE_SYSTEM_DIAGRAM;
    case wxROLE_SYSTEM_DIAL:
        return ROLE_SYSTEM_DIAL;
    case wxROLE_SYSTEM_DIALOG:
        return ROLE_SYSTEM_DIALOG;
    case wxROLE_SYSTEM_DOCUMENT:
        return ROLE_SYSTEM_DOCUMENT;
    case wxROLE_SYSTEM_DROPLIST:
        return ROLE_SYSTEM_DROPLIST;
    case wxROLE_SYSTEM_EQUATION:
        return ROLE_SYSTEM_EQUATION;
    case wxROLE_SYSTEM_GRAPHIC:
        return ROLE_SYSTEM_GRAPHIC;
    case wxROLE_SYSTEM_GRIP:
        return ROLE_SYSTEM_GRIP;
    case wxROLE_SYSTEM_GROUPING:
        return ROLE_SYSTEM_GROUPING;
    case wxROLE_SYSTEM_HELPBALLOON:
        return ROLE_SYSTEM_HELPBALLOON;
    case wxROLE_SYSTEM_HOTKEYFIELD:
        return ROLE_SYSTEM_HOTKEYFIELD;
    case wxROLE_SYSTEM_INDICATOR:
        return ROLE_SYSTEM_INDICATOR;
    case wxROLE_SYSTEM_LINK:
        return ROLE_SYSTEM_LINK;
    case wxROLE_SYSTEM_LIST:
        return ROLE_SYSTEM_LIST;
    case wxROLE_SYSTEM_LISTITEM:
        return ROLE_SYSTEM_LISTITEM;
    case wxROLE_SYSTEM_MENUBAR:
        return ROLE_SYSTEM_MENUBAR;
    case wxROLE_SYSTEM_MENUITEM:
        return ROLE_SYSTEM_MENUITEM;
    case wxROLE_SYSTEM_MENUPOPUP:
        return ROLE_SYSTEM_MENUPOPUP;
    case wxROLE_SYSTEM_OUTLINE:
        return ROLE_SYSTEM_OUTLINE;
    case wxROLE_SYSTEM_OUTLINEITEM:
        return ROLE_SYSTEM_OUTLINEITEM;
    case wxROLE_SYSTEM_PAGETAB:
        return ROLE_SYSTEM_PAGETAB;
    case wxROLE_SYSTEM_PAGETABLIST:
        return ROLE_SYSTEM_PAGETABLIST;
    case wxROLE_SYSTEM_PANE:
        return ROLE_SYSTEM_PANE;
    case wxROLE_SYSTEM_PROGRESSBAR:
        return ROLE_SYSTEM_PROGRESSBAR;
    case wxROLE_SYSTEM_PROPERTYPAGE:
        return ROLE_SYSTEM_PROPERTYPAGE;
    case wxROLE_SYSTEM_PUSHBUTTON:
        return ROLE_SYSTEM_PUSHBUTTON;
    case wxROLE_SYSTEM_RADIOBUTTON:
        return ROLE_SYSTEM_RADIOBUTTON;
    case wxROLE_SYSTEM_ROW:
        return ROLE_SYSTEM_ROW;
    case wxROLE_SYSTEM_ROWHEADER:
        return ROLE_SYSTEM_ROWHEADER;
    case wxROLE_SYSTEM_SCROLLBAR:
        return ROLE_SYSTEM_SCROLLBAR;
    case wxROLE_SYSTEM_SEPARATOR:
        return ROLE_SYSTEM_SEPARATOR;
    case wxROLE_SYSTEM_SLIDER:
        return ROLE_SYSTEM_SLIDER;
    case wxROLE_SYSTEM_SOUND:
        return ROLE_SYSTEM_SOUND;
    case wxROLE_SYSTEM_SPINBUTTON:
        return ROLE_SYSTEM_SPINBUTTON;
    case wxROLE_SYSTEM_STATICTEXT:
        return ROLE_SYSTEM_STATICTEXT;
    case wxROLE_SYSTEM_STATUSBAR:
        return ROLE_SYSTEM_STATUSBAR;
    case wxROLE_SYSTEM_TABLE:
        return ROLE_SYSTEM_TABLE;
    case wxROLE_SYSTEM_TEXT:
        return ROLE_SYSTEM_TEXT;
    case wxROLE_SYSTEM_TITLEBAR:
        return ROLE_SYSTEM_TITLEBAR;
    case wxROLE_SYSTEM_TOOLBAR:
        return ROLE_SYSTEM_TOOLBAR;
    case wxROLE_SYSTEM_TOOLTIP:
        return ROLE_SYSTEM_TOOLTIP;
    case wxROLE_SYSTEM_WHITESPACE:
        return ROLE_SYSTEM_WHITESPACE;
    case wxROLE_SYSTEM_WINDOW:
        return ROLE_SYSTEM_WINDOW;
    }
    return 0;
}

// Convert to Windows state
long wxConvertToWindowsState(long wxstate)
{
    long state = 0;
    if (wxstate & wxACC_STATE_SYSTEM_ALERT_HIGH)
        state |= STATE_SYSTEM_ALERT_HIGH;

    if (wxstate & wxACC_STATE_SYSTEM_ALERT_MEDIUM)
        state |= STATE_SYSTEM_ALERT_MEDIUM;

    if (wxstate & wxACC_STATE_SYSTEM_ALERT_LOW)
        state |= STATE_SYSTEM_ALERT_LOW;

    if (wxstate & wxACC_STATE_SYSTEM_ANIMATED)
        state |= STATE_SYSTEM_ANIMATED;

    if (wxstate & wxACC_STATE_SYSTEM_BUSY)
        state |= STATE_SYSTEM_BUSY;

    if (wxstate & wxACC_STATE_SYSTEM_CHECKED)
        state |= STATE_SYSTEM_CHECKED;

    if (wxstate & wxACC_STATE_SYSTEM_COLLAPSED)
        state |= STATE_SYSTEM_COLLAPSED;

    if (wxstate & wxACC_STATE_SYSTEM_DEFAULT)
        state |= STATE_SYSTEM_DEFAULT;

    if (wxstate & wxACC_STATE_SYSTEM_EXPANDED)
        state |= STATE_SYSTEM_EXPANDED;

    if (wxstate & wxACC_STATE_SYSTEM_EXTSELECTABLE)
        state |= STATE_SYSTEM_EXTSELECTABLE;

    if (wxstate & wxACC_STATE_SYSTEM_FLOATING)
        state |= STATE_SYSTEM_FLOATING;

    if (wxstate & wxACC_STATE_SYSTEM_FOCUSABLE)
        state |= STATE_SYSTEM_FOCUSABLE;

    if (wxstate & wxACC_STATE_SYSTEM_FOCUSED)
        state |= STATE_SYSTEM_FOCUSED;

    if (wxstate & wxACC_STATE_SYSTEM_HOTTRACKED)
        state |= STATE_SYSTEM_HOTTRACKED;

    if (wxstate & wxACC_STATE_SYSTEM_INVISIBLE)
        state |= STATE_SYSTEM_INVISIBLE;

    if (wxstate & wxACC_STATE_SYSTEM_INVISIBLE)
        state |= STATE_SYSTEM_INVISIBLE;

    if (wxstate & wxACC_STATE_SYSTEM_MIXED)
        state |= STATE_SYSTEM_MIXED;

    if (wxstate & wxACC_STATE_SYSTEM_MULTISELECTABLE)
        state |= STATE_SYSTEM_MULTISELECTABLE;

    if (wxstate & wxACC_STATE_SYSTEM_OFFSCREEN)
        state |= STATE_SYSTEM_OFFSCREEN;

    if (wxstate & wxACC_STATE_SYSTEM_PRESSED)
        state |= STATE_SYSTEM_PRESSED;

//    if (wxstate & wxACC_STATE_SYSTEM_PROTECTED)
//        state |= STATE_SYSTEM_PROTECTED;

    if (wxstate & wxACC_STATE_SYSTEM_READONLY)
        state |= STATE_SYSTEM_READONLY;

    if (wxstate & wxACC_STATE_SYSTEM_SELECTABLE)
        state |= STATE_SYSTEM_SELECTABLE;

    if (wxstate & wxACC_STATE_SYSTEM_SELECTED)
        state |= STATE_SYSTEM_SELECTED;

    if (wxstate & wxACC_STATE_SYSTEM_SELFVOICING)
        state |= STATE_SYSTEM_SELFVOICING;

    if (wxstate & wxACC_STATE_SYSTEM_UNAVAILABLE)
        state |= STATE_SYSTEM_UNAVAILABLE;

    return state;
}

// Convert to Windows selection flag
int wxConvertToWindowsSelFlag(wxAccSelectionFlags wxsel)
{
    int sel = 0;

    if (wxsel & wxACC_SEL_TAKEFOCUS)
        sel |= SELFLAG_TAKEFOCUS;
    if (wxsel & wxACC_SEL_TAKESELECTION)
        sel |= SELFLAG_TAKESELECTION;
    if (wxsel & wxACC_SEL_EXTENDSELECTION)
        sel |= SELFLAG_EXTENDSELECTION;
    if (wxsel & wxACC_SEL_ADDSELECTION)
        sel |= SELFLAG_ADDSELECTION;
    if (wxsel & wxACC_SEL_REMOVESELECTION)
        sel |= SELFLAG_REMOVESELECTION;
    return sel;
}

// Convert from Windows selection flag
wxAccSelectionFlags wxConvertFromWindowsSelFlag(int sel)
{
    int wxsel = 0;

    if (sel & SELFLAG_TAKEFOCUS)
        wxsel |= wxACC_SEL_TAKEFOCUS;
    if (sel & SELFLAG_TAKESELECTION)
        wxsel |= wxACC_SEL_TAKESELECTION;
    if (sel & SELFLAG_EXTENDSELECTION)
        wxsel |= wxACC_SEL_EXTENDSELECTION;
    if (sel & SELFLAG_ADDSELECTION)
        wxsel |= wxACC_SEL_ADDSELECTION;
    if (sel & SELFLAG_REMOVESELECTION)
        wxsel |= wxACC_SEL_REMOVESELECTION;
    return (wxAccSelectionFlags) wxsel;
}


#endif  // wxUSE_OLE && wxUSE_ACCESSIBILITY

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -