Свой Spy++

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Свой Spy++

Сообщение alibek » 21.05.2003 (Ср) 13:25

Привет, народ.
Делаю подобную прогу :)
Прога уже правильно определяет контрол под указателем мыши и его параметры (прямоугольник, стиль и прочее). Но хотелось бы, чтобы "выбранный" элемент обводился рамкой, как это сделано в Spy++.
Не знаю, как подступится.
Первая мысль была использовать API InvertRect два раза, первый раз по внешнему контуру, потом по внутреннему, чтобы осталась инвертированная рамка. Но это неправильно, в Spy наложенная рамка не рисуется поверх самого окна Spy.
Вторая мысль была рисовать в буфере прямоугольник нужного размера и накладывать его на экран. Тоже неправильно.
Вообще, рисование на DC экрана -- это неправильный подход, т.к. если окно перерисуется по какой-то причине, то рамке капут :)
Правильным было бы наложение какого-нибудь объекта (например, окна с вырезанной серединой), который бы инвертировал все, что находится под ним, но мне раньше не доводилось делать "экранные линзы", поэтому не знаю, с чего начать.
Может у кого будут правильные мысли? :)
Lasciate ogni speranza, voi ch'entrate.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 21.05.2003 (Ср) 18:52

А почему бы не выделать как в первом случае, но определать само окно твоего "Spy++" и не выделять его. Элементарная проверка.

А так, неплохо бы сырец посмотреть, прежде чем говорить что-то. Я не знаю, что у тебя наворочено :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.05.2003 (Пт) 10:06

Да окно то определить не проблема, но все равно подход неправильный. Он предполагает что после InvertRect выполняется Me.Refresh, что будет тормозить и вообще не есть гут.
В Spy все сделанно по другому и куда лучше, но я не могу сообразить, как именно это сделано. Впечатление такое, что там не рисуется поверх DC экрана, а выводится объект "Рамка", который инвертирует все, что находится под ним (за исключением окон Spy).
Исходники на публику выкладывать не хочу, там еще далеко от завершения. Если не трудно, оставь адрес, я залью архив проекта.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 81

    TopList