>Если делать общую ДЛЛ то надо стандартизировать интерфейс к контролам, т.е. чтобы все функции для работы с ними были похожи - создание, удаление, установка размеров, перерисовка и т.п.
Serge, ты предугадал мою первую тему для обсуждения.
Итак, начинаем.
Параметры компоненту можно передавать ввиде указателя на структуру.Структура специфична для каждого вида компонентов.Я предлагаю передавать указатель на структуру через стек.
1)Создание компонента.
В моих наработках по скролерам и кнопкам инициализация происходит при первом вызове контрола.Через стек передаётся указатель на структуру.Происходит инициализация компонента и устанавливается флаг о том, что контрол был инициализирован(флаг храниться в структуре пердаваемой контролу).Во время инициализации компонент перерисовывается полностью.
Можно инициализировать как делал я, а можно для каждого GUI компонента сделать отдельную функцию для инициализации.
Как посткпим с инициализацией ?
2)Удаление.
Можно возложить эту роль на сам компонент, а можно сделать отдельную функцию для каждого компонента.
3)Установка размеров.
Мой вариант.
Установка размеров компонента происходит во время инициализации компонента, когда в структуру, специфичную для каждого GUI компонента происходит занесение информации.А потом эта структура передаётся самому компоненту, который и производит инициализацию.
А какой вариант предлагаете вы ?
4)Перерисовка компонента.
Как это реализовано у меня.
Вся информация о сотоянии компонента: его инициализации, активности или не активности, разрешение на перерисовку, и т.д. храниться в специальном байте, находящимся в структуре, передаваемой компоненту.
При изменении состояний мыши в этом байте устанавливаются соответствующие биты и происходит вызов компонента.По сотоянию битов и координат мыши компонент судит о том, нужно ли производить перерисовку или нет.И нужно ли во время перерисовки компонента перерисовавать его полностью, а не только активную часть.
А что предлагаете вы ?
Обсуждаем.