Консультация № 68473
25.12.2006, 04:37
0.00 руб.
0 3 3
Доброе время суток всем!
Ситуация такая: допутсим у меня есть хэндл некоего окна. и Затем я получаю хэндл контрола. Можно ли определить явлется ли этот контрол окном ввода? Т.е. можно ли туда вводить буквы.
Понятно, что можно посомтреть не класс ли он Edit или Richedit. Но ведь есть и переназванные авторами по своему.

Обсуждение

Неизвестный
25.12.2006, 07:23
общий
это ответ
Здравствуйте, Белкин Алексей!
В общем случае нет, нигде не храниться информация о типе контрола.
Неизвестный
25.12.2006, 09:42
общий
это ответ
Здравствуйте, Белкин Алексей!
Я себе даже не представляю, чтобы существовал такой например стиль окна(класса) который определял признак возможности ввода. Ведь это зависит и от других факторов, например доступности этого окна (если оно недоступно, вам же ничего хорошего не даст то, что это Edit, вы все равно не сможете вводить туда текст).
По-этому необходим комплексный подход: опытным путем определить, что это за контрол (применяя например визуальное восприятие и Spy++), а затем если нужно определять установку специфических для этого контрола битовых признаков и значения свойств.
Если же это это программа с открытым кодом - то нет ничего проще запоминать что за контрол.
Неизвестный
25.12.2006, 12:37
общий
это ответ
Здравствуйте, Белкин Алексей!
Сильно маловероятно. Мало того, что любой контрол можно сделать таким, чтобы он позволял ввод, так вы еще не забывайте, что можно симулировать текстовое поле, создать свой курсор ввода и вперед - готовое текстовое поле. Плюс можно писать на Делфи, на Java... у них стандартные контролы ввода имеют другие названия классов.
И еще вспомните Excel - сама его сетка постоена на базе ListCtrl, а когда пользователь хочет что то написать, то на месте ячейки на лету создается Edit, принимает текст, передает его в сетку и сразу окно ввода удаляется. Как вы такую ситуацию определите?
Короче, любой найденный способ не будет 100%-м :)
Форма ответа