Обсуждение статьи "Улучшаем работу с Панелями: добавляем прозрачность, меняем цвет фона и наследуемся от CAppDialog/CWndClient" - страница 2

 
Denis Kirichenko:

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

Есть объект типа CBmpButton - кнопка с изображением. Так вот, само изображение кнопки выступает тут в качестве ресурса. Как получить доступ к его свойствам? Или нельзя?

Пример из Документации. 

Там я поиграл с методом CControlsDialog::CreateBmpButton1():

Объект самого изображения на панели не находится с помощью функции ObjectFind(), что вполне ест-но. А как его найти, если это вообще возможно?

Спасибо.

Изображение (рисунок) - это не объект. Объекты - это линии, прямоугольники ... графические элементы.

 

Здравствуйте, Владимир. Вы добавили в окно дополнительно ClientArea. И затем используете метод CMyWndClient::ShiftButton для скроллинга кнопок. Это не очень удобно, поскольку, кнопок в окне может быть много. Также, помимо кнопок может быть еще очень много элементов UI. То есть, понимаете, писать методы для каждого элемента и не забыть вызвать их в обработчиках скроллинга, та ещё задачка. А не проще скролить ClientArea? Тогда, все элементы UI, содержащиеся в нем, будут скролиться автоматически. Достаточно прописать только скроллинг ClientArea в обработчиках.

 
Mihail Matkovskij #:

Здравствуйте, Владимир. Вы добавили в окно дополнительно ClientArea. И затем используете метод CMyWndClient::ShiftButton для скроллинга кнопок. Это не очень удобно, поскольку, кнопок в окне может быть много. Также, помимо кнопок может быть еще очень много элементов UI. То есть, понимаете, писать методы для каждого элемента и не забыть вызвать их в обработчиках скроллинга, та ещё задачка. А не проще скролить ClientArea? Тогда, все элементы UI, содержащиеся в нем, будут скролиться автоматически. Достаточно прописать только скроллинг ClientArea в обработчиках.

Напишите пожалуйста такой пример. Думаю всем будет интересна такая реализация.

 
Vladimir Karputov #:

Напишите пожалуйста такой пример. Думаю всем будет интересна такая реализация.

Немного подумав я разобрался. Такую прокрутку реализовать нельзя из-за невозможности частичного скрытия любых объектов чарта (в данном случае это ClientArea и кнопки). В других UI это реализовано по-другому. Там выводится прямоугольная область которая попадает в Area скроллинга, а всё остальное скрыто. Отсюда и возникла путаница.