Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2020-11-03 | 144 |
5.00
из
|
Заказать работу |
|
|
Изменение оконной процедуры с помощью функции SetWindowLong.
Создание собственного метода обработки сообщений и замена стандартного метода в WindowProc. При этом старый указатель обычно запоминается, т.к. новый обработчик обрабатывает лишь некоторые сообщения, а остальные передаёт старому.
При написании нового компонента можно перекрыть виртуальный метод WndProc.
Это позволяет компоненту перехватывать сообщения в самом начале цепочки (за исключением внешних обработчиков, установленных с помощью свойства WindowProc).
Написание собственных методов-обработчиков. Обработчики встраиваются либо в метод Dispath c помощью макроса MESSEGE_MAP, либо перекрывая уже имеющийся метод-обработчик.
Перекрытие виртуального метода DefaultHandler. Для перехвата сообщений, которые не были обработаны с помощью методов-обработчиков.
Создание оконной процедуры и запись указателя на неё в свойство DefWndProc.
Для перехвата сообщений неоконных визуальных компонентов можно использовать все перечисленные выше способы, за исключением первого и последнего.
Обработчики сообщений, типы сообщений, связывание обработчика с событием в VCL
Методы и свойства, используемые в СОП
TObject. Dispatch Вызывает методы обработки для соответствующих сообщений.
Макрос позволяющий встроить вызов обработчиков сообщений в метод Dispatch()
BEGIN_MESSAGE_MAP
...
MESSAGE_HANDLER (<сообщение Windows>, <тип сообщения>, <имя процедуры обработчика>)
...
END _ MESSAGE _ MAP (<класс-родитель> чей метод Dispath вызывается в оконной процедуре)
Типы сообщений
Структуры, в которые сохраняется расшифровка дополнительных параметров сообщений определённого типа, поступающих от ОС.
struct DECLSPEC_DRECORD TMessage {
|
unsigned Msg;
struct {
NativeUInt WParam;
NativeInt LParam;
NativeInt Result; };
структура представляющая сообщения в VCL. "Совместимыми" с TMessage можно назвать структуры, которые имеют такой же размер.
struct DECLSPEC_DRECORD TWMPaint {
unsigned Msg;
HDC DC;
NativeInt Unused;
NativeInt Result; };
Структура используемая во всех сообщениях прорисовки.
TWMKey – сообщения нажатия клавиш,
TWMMouse – сообщения от «мыши».
Типы обработчиков сообщений
void __fastcall (__closure * TNotifyEvent) (TObject* Sender)
void __fastcall (__closure * TKeyPressEvent) (TObject* Sender, WideChar &Key)
void __fastcall (__closure * TDragOverEvent)(TObject* Sender, TObject* Source, int X, int Y, TDragState State, bool &Accept);
Создание собственного события в компоненте, связывание события и обработчика.
Создание собственного события в компоненте
//объявление нового типа функции
typedef void __fastcall (__closure *TEndEvent) (System::TObject *Sender, int who);
TEndEvent FOnOutRL; // объявление события
// объявление свойства чтения/записи обработчика
__property TEndEvent OnOutRL = {read=FOnOutRL, write=FOnOutRL};
virtual void __fastcall OutRL();
void __fastcall TMyComp::OutRL()
{
// если свойство обработчика присвоено пользователем то запускаем его
if (OnOutRL) OnOutRL (this, 20); // int 20, передаётся с сообщением
}
// активация события
OutRL ();
Основы JMS, Модели обмена сообщениями JMS
Java Messaging System
распределенная система, основанная на асинхронном обмене сообщениями (messages) между компонентами системы.
Message-Oriented Middleware (MOM) – это продукт, на основе которого и строится Messaging System.
Java Message Service (JMS) – это Java API (набор интерфейсов и классов) для работы с MOM.
{Queue|Topic}ConnectionFactory – создание JMS Connection. Администратор МОМ создает данный объект и связывает его с деревом JNDI.
{ Queue | Topic } Connection – абстрактное представление реального соединения между клиентом JMS и MOM.
{ Queue | Topic } Session – создается JMS Connection и используется клиентами для посылки и принятия сообщений.
Queue | Topic – доступ к представлению очереди или темы.
QueueSender, TopicPublisher – отправка сообщений.
QueueReceiver, TopicSubscriber – приём сообщений из очереди или темы:
• синхронно (метод recive()),
• для асинхронного приёма с помощью метода setMessageListener (MessageListener listener) задаётся ссылка на класс, переписывающий метод public void onMessage(Message message).
|
{ Object | Text | XML } Message – доступ к полям сообщений (реализуют интерфейс Message).
Основные классы JMS
Создание сессии
createQueueSession |createTopicSession (boolean transacted, int acknowledgeMode)
acknowledgeMode:
AUTO_ACKNOWLEDGE – в случае синхронного получения сообщений, подтверждение получения будет произведено автоматически, когда метод receive () возвратит значение не вызвав никакой исключительной ситуации. В случае асинхронного получения сообщений, подтверждение получения будет произведено, когда метод onMessage () вернет значение.
DUPS_OK_ACKNOWLEDGE – работа по подтверждению получения сообщения перекладывается на Session. Сообщения будут вновь доставлены в случае возникновения ошибки или "гибели" системы.
CLIENT_ACKNOWLEDGE – клиент должен вызвать метод acknowledge() интерфейса javax.jms.Message для того, чтобы явно подтвердить получение сообщения. При вызове данного метода будет подтверждено получение текущего и всех предыдущих полученных сообщений.
Типы сообщений
StreamMessage Считывать можно со стандартных интерфейсов ввода/вывода.
MapMessage Содержит информацию на подобии коллекций в виде ключ-значение (String, Object).
TextMessage Обычное, текстовое сообщение.
ObjectMessage Для передачи Serializable -объектов.
BytesMessage Список не интерпретированных байт. С его помощью можно передавать файлы.
Sender
Properties p = new Properties();
***
Context ctx = new InitialContext(p);
QueueConnectionFactory qcf =(QueueConnectionFactory)
ctx.lookup("java:comp/DefaultJMSConnectionFactory");
QueueConnection con = qcf.createQueueConnection();
QueueSession session =
con.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = null;
try {
queue = (Queue)ctx.lookup("MyQueue");
}
catch(NameNotFoundException nnfe)
{
queue = session.createQueue("MyQueue");
ctx.bind("MyQueue",queue);
} }
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!