| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Окно по точке |
| Автор: merz 4.6.2002, 11:19 | ||||
| Для получения окна по точке существуют 2 функции WindowFromPoint и ChildWindowFromPoint. Мне необходимо получить дочернее окно в заданной точке. Если родительское окно находится поверх остальных, то следующий код работает корректно:
Но оно может находится и не наверху! Поэтому пишем следующий код:
но он возвращает совершенно другой результат! В чем здесь собака зарыта? С Уважением, Merz. |
| Автор: suborg 4.6.2002, 16:01 |
| По-моему там если окно перекрыто другим окном, то оно не находится. |
| Автор: merz 4.6.2002, 16:35 |
| В WindowFromPoint так оно и есть но ChildWindowFromPoint находится... |
| Автор: Sheff 4.6.2002, 20:40 |
| ChildWindowFromPoint берёт хэндл дочернего окна по хэндлу родительского окна и точке. Но если твоё родительское окно закрыто другими окнами(который тоже являются родительскими), как же ты возьмёшь его хэндл с помощью ChildWindowFromPoint, ведь оно не является ни для кого дочерним. |
| Автор: merz 5.6.2002, 11:35 |
| То есть, как я понял, ты хочешь сказать что у окна бывают 2 родителя?? Оригинально! |
| Автор: Sheff 5.6.2002, 11:47 | ||
Я хочу сказать, что то твоё окно(родительское) не является ни для кого дочерним, разве что может для Explorer'а. |
| Автор: merz 5.6.2002, 11:57 | ||
| Ну и что? Дескриптор этого окна у меня есть:
|
| Автор: Sheff 5.6.2002, 12:05 | ||||||
А зачем тогда цикл, если ты знаешь хэндл этого самого родительского окна, разве нельзя взять Child вот так:
hwndCurrWnd - будет хэндлом дочернего окна. |
| Автор: merz 5.6.2002, 12:07 |
| То будет потомок - лежащий на самом дне z-буффера, а мне надо получить тот, что на самом верху (то есть ближе всего к нам) |
| Автор: Sheff 5.6.2002, 17:15 | ||
Ааа, так у тебя в этом окне ещё и куча чаилдов, которые друг друга перекрывают. Если ты хочешь взять самого "верхнего" чайлда, то не лучше ли юзать GetWindow с флагом GW_CHILD ? |
| Автор: merz 6.6.2002, 09:20 |
| Вобщем, пожоже разобрался я в этой проблеме.. Все дело в том, что окошко нужное - поле ввода на апплете И как показал Spy++ у апплета нет родителя... |