Поделиться через


Категории сообщений

Какие виды сообщений вы пишете обработчики для трех основных категорий?

  1. Сообщения Windows

    Это включает в себя в первую очередь эти сообщения, начиная с префикса WM_ , за исключением WM_COMMAND. Сообщения Windows обрабатываются окнами и представлениями. Эти сообщения часто имеют параметры, используемые при определении способа обработки сообщения.

  2. Управление уведомлениями

    К ним относятся уведомления в форме сообщений WM_COMMAND от элементов управления и других дочерних окон к их родительским окнам. Например, элемент управления редактирования отправляет родительское сообщение WM_COMMAND, содержащее код уведомления EN_CHANGE, когда пользователь принял действие, которое могло изменить текст в элементе управления редактированием. Обработчик окна для сообщения отвечает на сообщение уведомления соответствующим образом, например, извлечение текста в элементе управления.

    Фреймворк направляет сообщения управления уведомлениями аналогично другим сообщениям WM_. Однако одним из исключений является сообщение управляющего уведомления BN_CLICKED, отправляемое кнопками, когда пользователь нажимает их. Это сообщение обрабатывается специально как командное сообщение и направляется так же, как и другие команды.

  3. Командные сообщения

    К ним относятся WM_COMMAND сообщения уведомлений из объектов пользовательского интерфейса: меню, кнопки панели инструментов и клавиши акселератора. Платформа обрабатывает команды по-разному от других сообщений, и их можно обрабатывать другими типами объектов, как описано в разделе "Целевые объекты команд".

Сообщения Windows и сообщения Control-Notification

Сообщения в категориях 1 и 2 — сообщения Windows и уведомления управления обрабатываются окнами: объекты классов, производных от класса CWnd. К ним относятся CFrameWnd, , CMDIFrameWnd, CMDIChildWndCViewCDialogи собственные классы, производные от этих базовых классов. Такие объекты инкапсулируют HWNDдескриптор окна Windows.

Командные сообщения

Сообщения в категории 3 — команды — могут обрабатываться более широким спектром объектов: документов, шаблонов документов и самого объекта приложения в дополнение к окнам и представлениям. Если команда напрямую влияет на какой-то конкретный объект, то имеет смысл иметь этот объект для обработки команды. Например, команда Open в меню "Файл" логически связана с приложением: приложение открывает указанный документ после получения команды. Поэтому обработчик команды Open является функцией-членом класса приложения. Дополнительные сведения о командах и их маршрутизации в объекты см. в разделе "Как платформа вызывает обработчик".

См. также

Сообщения и команды в Платформе