Как узнать имя сомбобокса в Excel, если имею xендл

Программирование на Visual Basic for Applications
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Как узнать имя сомбобокса в Excel, если имею xендл

Сообщение Avtopic » 13.10.2006 (Пт) 15:45

Нужна идея, как узнать имя сомбобокса в Excel на форме, если имею xендл,
найденный с помощью API – ChildWindowFromPoint
(здесь Points найдены с помощью GetCursorPos)
Спасибо!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 13.10.2006 (Пт) 17:21

Имя? Никак....

Разве что перебором....

З.Ы. А на кой понадобилось то?
Весь мир матрица, а мы в нем потоки байтов!

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 13.10.2006 (Пт) 18:00

В одной из вариантов, при решении следующей задачи:

Форма торчит во время работы на самом верху книги, закрывая Excel-овский титлбаб, у самой формы титлбаб отрезан.
Содержит восемь комбобоксов и некоторые кнопки, и исполняет функции ТoolsBar-а.

при заходе мыши над комбобоксом, вызывается код, где:
1. Автоматически выпадает список, (независимо какой Style у сомбобокса, и без нажатия кнопки)
2. Запоминается размер и координаты окна комбобокса + его Dropdown листа.
3. запускается таймер, проверяющий через каждые n время координаты мыши.
4. при выходе курсора мыши за пределы запомненных координат (т.е. передумал действие с этим комбобоксом), Dropdown лист сворачивается.

Код небольшой и все это работает, но иногда, очень редко, но все же, при быстром передвижении курсора, на другой комбобокс, Dropdown лист прежнего, остается.
Это происходит именно при быстром переходе от одного комбобокса на другой. В остальных случаях, этого не происходит.
Вот и появились разные идеи...

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 13.10.2006 (Пт) 22:03

Вот вырезал часть кода и вставил в новый файл, чтобы выставит для примера.

Если кто может помочь, объясните, пожалуйста, почему приходится вызывать WindowFromPoint два раза,

Код: Выделить всё
GetCursorPos Pt
PWnd1 = WindowFromPoint(Pt.X, Pt.Y)      ‘1
GetWindowRect PWnd1, Wr
PWnd1 = WindowFromPoint(Pt.X, Wr.Bottom) ‘2 Это сомбобокс


чтобы добраться до сомбобокса[/code]
Вложения
example.rar
(22.11 Кб) Скачиваний: 56

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.10.2006 (Пн) 11:08

Наверно потому, что внутри у combo находится textbox...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 75

    TopList