Практика программирования на Microsoft visual си плюс-плюс.Сообщения в Windows.

43 подписчика

12+
12+

13 просмотров

месяц назад

ПожаловатьсяНарушение авторских прав

43 подписчика

12+
12+

13 просмотров

месяц назад

ПожаловатьсяНарушение авторских прав
12+
12+

13 просмотров

месяц назад

Практика программирования на Microsoft visual си плюс-плюс. Сообщения в Windows. Самым гениальным изобретением Microsoft является Window. Основным свойством Window является способность принимать сообщения. Очень простой и эффективный механизм. Сообщение состоит из идентификатора сообщения и двух параметров. Идентификатор - это число. Он позволяет выловить требуемое сообщение из потока сообщений, а параметры - произвести обмен данными. Поскольку параметр может быть указателем, то можно было бы обойтись и одним. Рассмотрим как это работает и для чего необходимо на примере нашей программы SpeachApp. Откроем наше Solution ProgrammingPraxis. Сейчас здесь пока только один проект SpeachApp. Мы закончили создание программы так, что управление генератором речи осуществляется тремя кнопками Speak, Pause/Resume, Stop. Мы также указали на возможность объединения кнопок Speak и Stop в одну по аналогии с Pause/Resume. Сделаем это сейчас. В коде нет ничего особенного, поэтому оставим его без комментариев. Запустим программу. Что мы видим? У нас появилась проблема. После завершения генерации на кнопке Speak/Stop остается надпись Stop. Эта надпись должна быть изменена на Speak после окончания генерации. Но как определить этот момент. В SAPI есть функция, которая позволяет задать идентификатор сообщения, которое будет посылаться при возникновении событий при генерации речи. К таким событиям относятся и начало и конец генерации. Поэтому нам нужно: первое - задать идентификатор сообщения. При этом необходимо обеспечить его уникальность, чтобы не было двух различных событий с одинаковым идентификатором. Windows резервирует для себя определённую область. Туда лучше не соваться. Для пользователя выделены две области - это область начинающаяся с шеснадцатиричного 8000 - полностью для пользователя и область начинающаяся с шеснадцатиричного 400 - здесь возможны конфликты с органами управления, например слайдерами. Поэтому используйте всегда область начинающаяся с шеснадцатиричного 8000. Этому значению соответствует константа WM_APP. второе - сообщить SAPI идентификатор и адресат. Это производится функцией из SAPI. Кроме того нужно сказать SAPI, что нас интересуют все сообщения. Это понадобится нам в дальнейшем. третье - ввести обработку наших сообщений. Для этого отметить на вкладке Class View класс нашего диалога. В окне Properties выбрать вкладку Overrides. Найти функцию OnWndMsg и выполнить для неё Add. Visual Studio добавит функцию и мы можем ввести обработку сообщений. Сначала проверим наше ли это сообщение и если да, то пройдемся по всем имеющимся необработанным сообщениям и выполним действия им соответствующие. Пока для нас было важно изменить надпись на кнопке Speak/Stop на Speak после окончания регистрации. Но мы можем также изменить надпись на кнопке Speak/Stop на Stop после начала регистрации. Теперь даже при управлении речью программно, как сейчас при старте программы, кнопка Speak/Stop соответствует реальному состоянию. Поэтому можно убрать изменение надписи на кнопке из функции вызываемой при нажатии на эту кнопку. Пока пока. Текст автоматически сгенерирован нашей программой SpeachApp. Смотрите предыдущие видео.

Название:

Практика программирования на Microsoft visual си плюс-плюс.Сообщения в Windows.

Категория:

Разное