Вопрос № 104383: Здравствуйте, тут мне задачу надо решить:
На форме рисунок и две кнопки: увеличить и уменьшить. При нажатии на увеличить размер
рисунка увеличивается
на 10 пикселей, рисунок смещается влево и вверх на пять пикселов.
Аналогично п...Вопрос № 104386: Добрый день!
Есть чужое окно, на котором расположены всякие кнопки и переключатели. Хэндл этого окна несложно узнать по заголовку используя функцию FindWindow. А как узнать хэндл определенной кнопки или переключателя на это самой форме? Потом нуж...
Вопрос № 104.383
Здравствуйте, тут мне задачу надо решить:
На форме рисунок и две кнопки: увеличить и уменьшить. При нажатии на увеличить размер
рисунка увеличивается
на 10 пикселей, рисунок смещается влево и вверх на пять пикселов.
Аналогично при уменьшении рисунка: его размеры уменьшаются, и смещается вправо и вниз.
Я написал такой код (в приложении), и кнопка на пять пикс елов не двигается, она резко как-то двигается, я не знаю оператора, который на пикселы уменьшает рисунки.
Подскажите пожалуйста как реализовать мне эту задачу
Можно предложить следущее:
- установить Image1.Stretch в True - он отвечает за масштабирование (правда без всяких сглаживаний, только на уровне GDI (StretchBlt), "красивое" масштабирование это отдельная тема)
- использовать Image1.SetBounds чтобы устанавливать все координаты и размеры сразу, а не вызывать несколько последовательных рывков.
Для вашего случая (как описано в вашем вопросе - в коже у вас что-то совсем другие цифры)
Ответ отправил: PavelGM (статус: 10-ый класс)
Ответ отправлен: 05.10.2007, 10:28
Вопрос № 104.386
Добрый день!
Есть чужое окно, на котором расположены всякие кнопки и переключатели. Хэндл этого окна несложно узнать по заголовку используя функцию FindWindow. А как узнать хэндл определенной кнопки или переключателя на это самой форме? Потом нужно отметить переключатель и нажать на кнопку програмным путем.
Отправлен: 05.10.2007, 08:49
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: W@NDeReR
Здравствуйте, Red Spirit!
Найти кнопку и затем нажать на неё можно так:
prog:=FindWindow(nil,'Error');//Ищем программу
but:=FindWindowEx(prog,0,'TButton',nil);//ищем кнопку
SendMessage(but,bm_Click,0,0);//щелкаем по кнопке
--------- Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.
Ответ отправил: W@NDeReR (статус: 5-ый класс)
Ответ отправлен: 05.10.2007, 09:57 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ! Но я заметил, что функция FindWindowEx работает не на всех окнах...
Отвечает: Dragon
Здравствуйте, Red Spirit!
вот процедура определение Handle и окна и кнопок и т.д.
можно сделать маленькую универсальную прогу по определению Handle любого окна, кнопок и т.д. написав только указанную ниже в приложении процедуру и использовать в дальнейшем. Сделайте для формы fsStayOnTop и при наведении на необходимы компонент или форму у которого нужно определеить Handle на caption формы появится Handle. Поставьте, например, для таймера интервал 1000.
Нажатие кнопки делается так(например кнопки OK):
SendMessage(Wind,WM_Command,MakeWParam(Id,BN_CLICKED),Ex);
где
wind - handle окна где располагается кнопка
id:=GetDlgCtrlID(Ex);// id кнопки
Ex:=FindWindowEx(Wind,0,'Button','OK');// находим кнопку OK
Удачи
Приложение:
Ответ отправил: Dragon (статус: 2-ой класс)
Ответ отправлен: 05.10.2007, 10:30 Оценка за ответ: 5 Комментарий оценки: Спасибо! У меня уже есть программулина такого типа, называется EliteSpy (написана на VB) частенько пользуюсь :) И, не понятно, почему функция FindWindowEx работает не для всех окон...