Проблема при переносе приложения для настольного компьютера на 64-разрядную версию, поддерживающую доступность Microsoft - PullRequest
0 голосов
/ 15 марта 2019

Я портирую настольное приложение, которое поддерживает Microsoft Accessibility, с 32-разрядных на 64-разрядные.Это приложение имеет множество пользовательских элементов управления.При вызове NotifyWinEvent():

/*Pseudocode*/
MYSTRUCT *ptr;
allocate and assign data to ptr;
Call NotifyWinEvent(EVENT_OBJECT_FOCUS, hwnd, OBJID_CLIENT, (long)ptr).

Код извлекает указатель в реализованном методе IAccessible и использует его:

/* pseudocode */

TDMETHODIMP CMSAAMyProxy::get_accRole( VARIANT varChild, VARIANT *pvarRole )
{
    if (VT_I4 == varChild.vt)
    {
        MYSTRUCT *ptr = (MYSTRUCT *)varChild.lVal;
        /* Use the ptr here */
    }
}

Такой код записан во многих файлах.Хотя приведенный выше код хорошо работает на 32-разрядной версии, он падает на 64-разрядной из-за усечения указателя.

Есть ли какой-либо альтернативный API, который я могу использовать для решения этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...