|
В этом разделе размещены "самодельные" контролы, восполняющие
отстуствие или недостатки существующих стандартных контролов. Так же здесь лежат куски кода,
в виде классов или проектов, выполняющие какие-то полезные функции. Все ниже расположенное
уже переросло просто примеры, их я вынес в отдельный раздел.
Этот софт, с согласия авторов, распостраняется совершенно бесплатно.
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22]
|
|
Вот еще одна вариация на тему сабклассеров. В принципе, при отладке я использую MsgHook.dll, но при сборке заменяю его своей библиотекой. Мой сабклассер весит 20Kb. Возможности: множественный сабклассинг (т.е. можно ставить хуки на несколько окон) и ничего более - ни констант, ни типов - он создавался с целью экономии места.
--------------------
Оговорюсь для неграмотных: сабклассинг - это механизм замены стандартной оконной процедуры класса на любую другую, которая будет принимать все сообщения, направляемые окну. После приема сообщения новая процедура должна передать его старой(стандартной) процедуре. Если новая процедура не передает сообщение старой процедуре, это называется блокировкой сообщения. Процесс замены и восстановления стандартной процедуры я буду называть установкой/снятием хука (хотя технически это не хук, но для удобства назовем его так).
Контрол переделан полностью. Теперь принцип работы такой: каждый экземпляр сабклассера - это клиент, а сабклассируемое онко - это сервер. Если несколько сабклассеров хотят поставить хук на одно окно, то ставится всего один хук, и все экземпляры сабклассеров получают события от окна. Если один сабклассер снимает хук, то этот сабклассер просто удаляется из очереди на рассылку сообщений. Хук реально снимается, только когда последний(т.е. единственный оставшийся) сабклассер делает запрос на снятие хука. И так с каждым окном.
Еще сделал возможность установки приоритетов: если один сабклассер первым ставит хук на окно, он может установить для себя повышенный
приоритет:
Exclusive - другие сабклассеры не смогут поставить хук на это же окно.
High - другие сабклассеры могут ставить хук, но решение о блокировке или пропускании сообщения зависит только от сакбассера с приоритетом High. При удалении cабклассера с повышенным проиритетом, любой из отсавшихся сабклассеров сможет заблокировать передачу сообщения.
Под "несколькими сабклассерами" в вышеприведенном тексте подразумеваются несколько одновременно работающих экземпляров класса CMsgHook из библиотеки mh.dll В ПРЕДЕЛАХ ОДНОЙ ПРОГРАММЫ(ПРОЕКТА).
Ну а внешне(если не считать новый параметр - приоритет) все выглядит по-старому.
|
Размер:
6 КБайт
|
Добавлено: 13 декабря 2002 |
|
|
|
|
|
Графопостроитель с возможностями:
 макс. количество графиков: 255
 5 видов интерполяции: кубический сплайн, В-сплайн, сплайн Катмулла-Рома, полином Ньютона(1), полином Лагранжа
 автоматическое масштабирование графиков
 установка вспомогательных элементов(вектор, касательная, эллипс/окружность, прямоугольник)
 форматирование чисел к виду X.XXeN
 отображение узлов графиков
 выравнивание масштабов X и Y(для графо-аналитических расчетов)
 изменение толшины графиков
 изменение шага координатных сеток
 изменение цвета любого элемента
 запись комментариев
 сохранение и загрузка графиков в файл(простой формат - столбец X и столбец Y, и два собственных формата - ASCII и бинарный с возможностью сохранения вида)
 отдельная установка толщины для каждого графика
 визуальная установка вспомогательных элементов
 выделение точек мышью с возможностью HotTracking
 перетаскивание любой точки с помощью мыши
 крестообразный курсор
--- Новое в этой версии ---
ОЧЕНЬ серъезно переделан, добавил большое количество новых функций, большинство из них по заявкам потребителей. Среди серъезных новшеств такие:
 настройка всех возможных свойств отдельно для каждого графика
 возможность создания нескольких слоев
 работа с буфером обмена напрямую
 сетка может растягиваться вместе с контролом
Описание основных возможностей(а их более 20) находится на первой странице хелпа к OCX.
Примеры, демонстрирующие все возможности контролов, писать пришлось бы очень долго, т.к. возможностей - море. Поэтому даю в качестве демонстрации свою программу. Это своего рода front-end для двух главных контролов - ComCtl и GraphEx. Это бесплатная версия. Ограничения: 3 слоя, по 2 графика на слой. Будут незначительные глюки в дереве слоев/графиков при перетаскивании из-за вышеуказанных ограничений. Обрати внимание: программа(GraphEx4.exe) рассчитана на те версии контролов, которые включены в дистрибутив. В процессе установки они будут установлены и зарегистрированы в X:\WIN_DIR\SYS_DIR\ Для утилиты GraphKeeper требуется MDAC 2.7.
--- Еще обновления ---
Ну тут много нового:
- можно рисовать стрелки на осях (для каждого слоя отдельно), причем избирательно - для каждой полуоси отдельно.
- можно выбирать шрифт для чисел осей (для каждого слоя отдельно)
- можно рисовать графики и фигуры пунктиром и прочими стилями (для каждого графика/фигуры отдельно)
- окружность/эллипс можно рисовать не полностью, а только часть дуги, указав начальный и конечный угол
- можно отключать контроль координат, чтобы начальная конечная точка фигуры находилась вне рабочего пространства графиков
- в средства автоматизации помимо визуальной установки фигур были добавлены визуальная установка графиков, масштаба(2 вида), "перетаскивания" слоя.
- на слой можно добавлять надписи, прикрепяя их либо к точке окна, либо к сетке слоя(в этом случае при масштабировании или перетаскивании слоя надпись соответственно перемещается). Для каждой надписи можно выбрать шрифт, цвет, фон, бордюр.
- все это можно сохранять в бинарном формате GSF. Текущая версия формата - 4.10, совместима вниз до версии 4.04.
|
Размер:
77 КБайт
|
Добавлено: 13 декабря 2002 |
|
|
|
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22]
|