1.3.3.3. Сообщения WM_SIZE и WM_SIZING
1.3.3.3. Сообщения WM_SIZE и WM_SIZING
События WM_SIZE и WM_SIZING позволяют окну реагировать на перемещение его пользователем. В "классическом" варианте, когда пользователь начинает тянуть рамку окна, на экране рисуется "резиновый" прямоугольник, соответствующая сторона или угол которого движется за курсором мыши. Окно получает сообщение WM_SIZING при каждом изменении размера этого прямоугольника. Параметр lParam при этом содержит указатель на структуру TRect с новыми координатами прямоугольника. Окно может не только прочитать эти координаты, но и изменить их, блокировав тем самым нежелательные изменения размера. На этом, в частности, основано использование свойства Constraints: если размер окна при перемещении становится меньше или больше заданного, при обработке сообщения WM_SIZING размер увеличивается или уменьшается до необходимого. Параметр wParam содержит информацию о том, за какую сторону или угол тянет пользователь, чтобы программа знала, координаты какого из углов прямоугольника нужно смещать, если возникнет такая необходимость.
После того как пользователь закончит изменять размеры окна и отпустит кнопку мыши, окно получает сообщение WM_SIZE. При получении этого сообщения окно должно перерисовать себя с учетом новых размеров. (Окно получает сообщение WM_SIZE после изменения его размеров по любой причине, а не только из-за действий пользователя.)
Описанный "классический" вариант в чистом виде существует только в Windows 95. Во всех более поздних версиях по умолчанию включена опция отображения содержимого окна при перетаскивании и изменении размеров (начиная с Windows ХР эта опция не только включается по умолчанию, но и не отключается средствами пользовательского интерфейса). В таком режиме при изменении размеров окна вместо прямоугольника "резиновым" становится само окно, и любое перемещение мыши при изменении размеров приводит к перерисовке окна. В этом режиме окно получает сообщение WM_SIZE каждый раз после сообщения WM_SIZING, а не только при завершении изменения размеров. Но в целом логика этих сообщений остается прежней, просто с точки зрения программы это выглядит так, как будто пользователь изменяет размеры окна "по чуть-чуть".
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
8.2. Сообщения
8.2. Сообщения Как было отмечено выше, цель взаимодействия в контексте языка UML заключается в том, чтобы специфицировать коммуникацию между множеством взаимодействующих объектов. Каждое взаимодействие описывается совокупностью сообщений, которыми участвующие в нем
9.4. Сообщения
9.4. Сообщения Сообщения, как элементы языка LJML, уже рассматривались ранее при изучении диаграммы последовательности (см. главу 8). При построении диаграммы кооперации они имеют некоторые дополнительные семантические особенности. Сообщение на диаграмме кооперации
Сообщения
Сообщения В подсистеме STREAMS все данные передаются в виде сообщений. С помощью сообщений передаются данные от приложений к драйверу и обратно. Сообщения используются для взаимодействия модулей между собой. Модули могут также генерировать сообщения для уведомления
11.2.1 Сообщения
11.2.1 Сообщения С сообщениями работают четыре системных функции: msgget, которая возвращает (и в некоторых случаях создает) дескриптор сообщения, определяющий очередь сообщений и используемый другими системными функциями, msgctl, которая устанавливает и возвращает связанные с
8.13.9 Сообщения Hello
8.13.9 Сообщения Hello Каждый маршрутизатор OSPF конфигурируется с уникальным идентификатором, использующимся в сообщениях. Обычно в качестве идентификатора применяют наименьшую часть IP-адреса этого маршрутизатора.Маршрутизатор периодически отправляет в многоадресной
15.8 Сообщения RPC
15.8 Сообщения RPC Клиент RPC посылает запросы серверу и получает ответы на них в специальных сообщениях. Что должны содержать эти сообщения, чтобы клиент и сервер поняли друг друга?Необходим идентификатор транзакции, определяющий соответствие между запросом и ответом.
25.2. Сообщения
25.2. Сообщения Начнем с самого простого — отображения небольших текстовых сообщений. Для этой цели можно использовать два виджита — Infobox или Msgbox. Первый отличается от второго тем, что не ждет подтверждения пользователя о прочтении, а закрывается через некоторое время.
Сообщения
Сообщения Слово «Статусы» мы уже кучу раз произнесли, да и про сообщения обмолвились. Пора разобраться с темой, даром что строчка Сообщения контактовском меню слева расположены ниже, чем Аудиозаписи и Видео. Но этим красавцам свой черед, а сейчас – о главном. Начнем с
Сообщения
Сообщения Пользователи Facebook могут обмениваться несколькими типами сообщения.Первый и самый распространенный – комментарий к публикациям на Стене: эту возможность вы получите, попав в список Друзей данного пользователя. Оставить комментарий можно с помощью ссылки
Личные сообщения
Личные сообщения На первом этапе мы занимались продвижением вручную, писали людям личные сообщения. Текст сообщения может быть разным. Мы тестировали несколько вариантов текстов и сейчас еще продолжаем тестировать.Например, текст может быть примерно следующий: «Добрый
Сообщения
Сообщения WM_TIMER Сообщение WM_TIMER отправляется в очередь сообщений установившего таймер потока или соответствующей функции обратного вызова TimerProc по истечении интервала, заданного при установке таймера функцией SetTimer .WM_TIMER wTimerID = wParam ; // идентификатор таймера tmprc = ( TIMERPROC *)
SMS-сообщения
SMS-сообщения Отправка SMS-сообщения с помощью новых возможностей тоже очень и очень проста. Эти сообщения весьма популярны у владельцев мобильных телефонов. Раньше для отсылки и приема SMSприходилось использовать неуправляемый код, очень сложный для восприятия неопытным
У6.4 Сообщения
У6.4 Сообщения Рассмотрите знакомую вам систему электронной почты. Определите в духе этой лекции абстрактный тип данных ПОЧТОВОЕ_СООБЩЕНИЕ. Включите в него не только функции-запросы, но и команды и