Как получить графический объект PowerBuilder для данного дескриптора HWND? - PullRequest
4 голосов
/ 10 ноября 2009

В моем приложении (PowerBuilder) я хотел бы иметь возможность определить объект graphicobject, который соответствует заданному дескриптору окна.

Простая итерация по массиву Control[] и сравнение значения, возвращаемого функцией Handle() для каждого из дочерних элементов управления, не работает, поскольку не все объекты в моем приложении являются дочерними элементами основного окна (учитывая логин диалоги).

Будет приемлемо любое решение PowerScript или C / C ++.

Может быть, есть какое-нибудь оконное сообщение, которое я мог бы отправить оконным дескрипторам, и это сообщение понимают только окна PowerBuilder, которые ответили бы их внутренним именем объекта или подобным?

1 Ответ

1 голос
/ 12 ноября 2009

Требуется ли определять объект по дескриптору, или вы просто хотите идентифицировать объект, например, чтобы знать, где находится код, который нужно изменить? Я создал инструмент, который делает последнее, но использует фокусировку на объект, а не дескрипторы окон.


(добавлено 2010-06-21) Для окон, которые не являются дочерними элементами основного окна, вы можете явно проверить каждое из этих имен классов окон с помощью isValid(). Затем для каждого действительного окна, рыться в поисках ручки. Это должно работать до тех пор, пока вы одновременно открываете только один экземпляр класса окна. Если вы открываете несколько экземпляров, я думаю, вам нужно будет добавить механизм регистрации к open этих окон, чтобы приложение могло получить к ним доступ.

...