Вопрос № 68473: Доброе время суток всем!
Ситуация такая: допутсим у меня есть хэндл некоего окна. и Затем я получаю хэндл контрола. Можно ли определить явлется ли этот контрол окном ввода? Т.е. можно ли туда вводить буквы.
Понятно, что можно посомтреть не кл...
Вопрос № 68.473
Доброе время суток всем!
Ситуация такая: допутсим у меня есть хэндл некоего окна. и Затем я получаю хэндл контрола. Можно ли определить явлется ли этот контрол окном ввода? Т.е. можно ли туда вводить буквы.
Понятно, что можно посомтреть не класс ли он Edit или Richedit. Но ведь есть и переназванные авторами по своему.
Отвечает: n0name
Здравствуйте, Белкин Алексей!
В общем случае нет, нигде не храниться информация о типе контрола.
Ответ отправил: n0name (статус: 8-ой класс)
Ответ отправлен: 25.12.2006, 07:23
Отвечает: Tek
Здравствуйте, Белкин Алексей!
Я себе даже не представляю, чтобы существовал такой например стиль окна(класса) который определял признак возможности ввода. Ведь это зависит и от других факторов, например доступности этого окна (если оно недоступно, вам же ничего хорошего не даст то, что это Edit, вы все равно не сможете вводить туда текст).
По-этому необходим комплексный подход: опытным путем определить, что это за контрол (применяя например визуальное восприятие и Spy++), а затем если нужно определять установку специфических для этого контрола битовых признаков и значения свойств.
Если же это это программа с открытым кодом - то нет ничего проще запоминать что за контрол.
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 4-ый класс)
Ответ отправлен: 25.12.2006, 09:42
Отвечает: estiGi
Здравствуйте, Белкин Алексей!
Сильно маловероятно. Мало того, что любой контрол можно сделать таким, чтобы он позволял ввод, так вы еще не забывайте, что можно симулировать текстовое поле, создать свой курсор ввода и вперед - готовое текстовое поле. Плюс можно писать на Делфи, на Java... у них стандартные контролы ввода имеют другие названия классов.
И еще вспомните Excel - сама его сетка постоена на базе ListCtrl, а когда пользователь хочет что то написать, то на месте ячейки на лету создается Edit, принимает текст, передает его в сетку и сразу окно ввода удаляется. Как вы такую ситуацию определите?
Короче, любой найденный способ не будет 100%-м :)
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 25.12.2006, 12:37