![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| alexcustov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 11.6.2010 Где: Полацкае княства Репутация: нет Всего: нет |
Имеется HWND окна, найденный по известному алгоритму. Узнать является ли это окно Edit-ом из контролов Win32 API можно по GetClassName. При этом если данный edit написан на windows forms, то его имя класса представляет собой что-то непостоянное вида "WindowsForms10.EDIT.app.0.34f5582_r12_ad1". Можно конечно сравнивать по рекэкспу "WindowsForms[0-9]+.EDIT.*", но мне это кажется криво. Есть ли прямой способ узнать, что HWND - это EDIT из windows forms?
P.S. зачем это нужно - далее HWND обрабатывается специальным образом, и для edit-ов есть специальная логика. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
EDIT можно опознать по коду DLGC_HASSETSEL, который возвращает WM_GETDLGCODE,
но ни что не мешает потомку переписать это сообщение по своему, так что абсолютной гарантии все равно не будет. Гарантию может дать только наличие в цепочке предков процедуры окна класса WC_EDIT (или одной из версий RichEdit), но определить эту цепочку для произвольного класса в общем случае невозможно, т.к. она не имеет какого-то ПМЖ. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
Нормальный подход... Только можно обойтись и без регекспа, самостоятельно разбирая это имя. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |