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


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

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

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

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

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

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

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

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

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

Сообщения Windows и сообщения с уведомлениями об элементах управления

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

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

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

См. также

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