Эта записка описывает внутренние сообщения Windows и ресурсов форматы, используемые в MFC. Эта информация объясняет осуществление рамок и будет оказывать Вам помощь в отладке приложения. Для приключений несмотря на то, что вся эта информация официально поддерживается, вы можете использовать некоторые из этих сведений для современных реализаций.
Эта записка содержит MFC частных деталей; все содержимое могут быть изменены в будущем. Частные сообщения Windows MFC имеют смысл в рамках одного приложения, но в будущем изменится на содержат системные сообщения.
Диапазон MFC частные сообщения Windows и типы ресурсов находятся в диапазоне зарезервированных «система» выделить на Microsoft Windows. В настоящее время не все числа в диапазонах используются и в будущем, могут использоваться новые номера в диапазоне. Используемые в настоящее время номера могут быть изменены.
Частные Windows MFC сообщения находятся в диапазоне 0x360-> 0x37F.
MFC частных ресурсов, типы находятся в диапазоне 0xF0-> 0xFF.
Сообщения Windows частный MFC
Эти сообщения Windows использовать вместо виртуальных функций C++ где требуется сравнительно слабая связь между объектов window и где виртуальной функции C++ не следует.
Эти частные сообщения Windows и связанных с ними параметров структуры объявляются в заголовке частных MFC ' AFXPRIV.H'. Помните, что любой из вашего кода, содержащего этот заголовок может полагаться на незарегистрированных поведение и воля вероятно перерыв в будущем версии MFC.
В редких случаях, о необходимости для обработки одного из этих сообщений следует использовать макрос карта сообщение ON_MESSAGE и обрабатывать сообщение в универсальном формате LRESULT/WPARAM/LPARAM.
WM_QUERYAFXWNDPROC
Это сообщение отправляется к окну, которое в настоящее время создается. Это число отправляется очень рано в процессе создания как метод определения Если WndProc AfxWndProc.Возвращает значение 1, AfxWndProc .
| wParam | Не используется |
| lParam | Не используется |
| возвращает | 1 Если обрабатываемые AfxWndProc |
WM_SIZEPARENT
Это сообщение отправляется его непосредственные дочерние во время изменения размера (вызов CFrameWnd::RecalcLayout , который вызывает CWnd::RepositionBarsCFrameWnd::OnSize ) в фрейме окна для перемещения элемента управления полосы вокруг стороны на раме. Структура AFX_SIZEPARENTPARAMS содержит текущий прямоугольник доступных клиенту родителей и HDWP (которые могут быть NULL) с которой для вызова DeferWindowPos для сведения к минимуму перерисовки.
| wParam | Не используется |
| lParam | Адрес AFX_SIZEPARENTPARAMS структуры |
| возвращает | Не используется (0) |
Игнорируя сообщение указывает, что окно не принимает участие в макете.
WM_SETMESSAGESTRING
Это сообщение отправляется в фрейме окна просить обновить строку сообщения в строке состояния. ID строки или LPCSTR могут быть указаны (но не оба).
| wParam | Строка ID (или ноль) |
| lParam | LPCSTR для строки (или NULL) |
| возвращает | Не используется (0) |
WM_IDLEUPDATECMDUI
Это сообщение отправляется в время простоя для реализации времени простоя обновление пользовательского Интерфейса обработчиков команда update. Если окно (обычно панель управления) обрабатывает сообщение, он создает объект CCmdUI (или объект производного класса) и вызвать CCmdUI::DoUpdate для каждой из "элементов" в окне. Это в свою очередь будет проверять наличие обработчика ON_UPDATE_COMMAND_UI для объектов в цепочке обработчика команды.
| wParam | BOOL bDisableIfNoHandler |
| lParam | Не используется (0) |
| возвращает | Не используется (0) |
bDisableIfNoHandler не равно нулю, чтобы отключить объект пользовательского Интерфейса, если нет ни ON_UPDATE_COMMAND_UI ни обработчик ON_COMMAND.
WM_EXITHELPMODE
Это сообщение отправляется CFrameWnd , позволяющее для выхода из контекстно-зависимого режим. Получение этого сообщения завершение модального цикла работ по CFrameWnd::OnContextHelp.
| wParam | Не используется (0) |
| lParam | Не используется (0) |
| возвращает | Не используется |
WM_INITIALUPDATE
Это сообщение отправляется шаблон документа ко всем потомкам фрейма окна когда это безопасно для них сделать их начального обновления. Он сопоставляется вызов CView::OnInitialUpdate , но могут быть использованы в других CWnd-производные классы для других разовые обновления.
| wParam | Не используется (0) |
| lParam | Не используется (0) |
| возвращает | Не используется (0) |
WM_RECALCPARENT
Это сообщение отправляется от представления для родительского окна (полученные через GetParent) заставить Перерасчет макета (как правило, родитель будет вызывать RecalcLayout). Это используется в приложениях OLE сервера, где это необходимо для кадра расти в размерах, как по мнению общий размер растет.
Если родительское окно обрабатывает это сообщение он должен возвращать значение TRUE и заполнить RECT в lParam с новым размер клиентской области. Это используется в CScrollView правильно обрабатывать полосы прокрутки (место затем на внешней стороне окна при добавлении) при активации на месте объекта сервера.
| wParam | Не используется (0) |
| lParam | LPRECT rectClient, может иметь значение NULL |
| возвращает | Значение TRUE, если новый клиентский прямоугольник вернулся, FALSE в противном случае |
WM_SIZECHILD
Это сообщение отправляется COleResizeBar в его окно-владелец (через GetOwner) когда пользователь изменяет размер панели изменения размера с маркеры изменения размера. COleIPFrameWnd отвечает на это сообщение, пытаясь изменить положение в фрейме окна, поскольку пользователь запросил.
Новый прямоугольник, в клиентские координаты относительно фрейма окна, который содержит изменения размера бар, указывает на lParam.
| wParam | Не используется (0) |
| lParam | LPRECT rectNew |
| возвращает | Не используется (0) |
WM_DISABLEMODAL
Это сообщение отправляется всем всплывающие окна, принадлежащие фрейм окна, в которое время деактивации. В фрейме окна использует результат для определения ли отключить всплывающее окно.
Можно использовать для выполнения особой обработки в всплывающем окне, когда кадр входит в модальное состояние или сохранить некоторые всплывающие окна от получения инвалидами. Всплывающие подсказки используйте это сообщение чтобы уничтожить себя, когда в фрейме окна переходит в модальное состояние, например.
| wParam | Не используется (0) |
| lParam | Не используется (0) |
| возвращает | Ненулевое значение не отключить окно, 0 указывает, что окно будет отключен |
WM_FLOATSTATUS
Это сообщение отправляется всем всплывающие окна, принадлежащие фрейм окна, когда активирован или деактивирован другим окном верхнего уровня кадра кадр. Это используется в реализации MFS_SYNCACTIVE в CMiniFrameWnd, для синхронизации активации этих всплывающих окон с активацией окна верхнего уровня кадра.
| wParam | Является одним из следующих значений: FS_SHOW FS_HIDE FS_ACTIVATE FS_DEACTIVATE FS_ENABLE FS_DISABLE FS_SYNCACTIVE |
| lParam | Не используется (0) |
Возвращаемое значение должно быть от нуля, если FS_SYNCACTIVE является набор и syncronizes окно активации с родительского фрейма. CMiniFrameWnd возвращает отличное от нуля, когда стиль имеет значение MFS_SYNCACTIVE.
Для получения дополнительной информации см. осуществление CMiniFrameWnd.
WM_ACTIVATETOPLEVEL
Это сообщение отправляется окна верхнего уровня при активации или деактивации окна в своей «Группа высшего уровня». Окно является частью группы высшего уровня, если это окно верхнего уровня (без родителя или владелец), или оно принадлежит в окне. Это сообщение используется подобен WM_ACTIVATEAPP, но работает в ситуациях, когда windows, принадлежащие к различным процессам смешиваются в иерархии "единого окна" (Общие в приложениях OLE).
WM_QUERY3DCONTROLS
Это сообщение отправляется во время создания окна для определения, если окно должно быть созданном как подкласс, CTL3D32.DLL. 3D элементов управления по умолчанию включена для CControlBar, CDialog, CPropertySheet и CFormView.
| wParam | Не используется (0) |
| lParam | Не используется (0) |
| возвращает | Ненулевое значение для подкласса с CTL3D. Возвращаемое значение используется для вызова Ctl3dSubclassDlgEx. |
WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE
Эти сообщения используются в осуществлении контекстной справки. Для получения дополнительной информации обратитесь к технической записке 28.
Форматы ресурсов частным MFC
В настоящее время существует только один формат MFC частных ресурсов определены, RT_DLGINIT.
Формат RT_DLGINIT ресурсов
Один формат частных ресурсов MFC используется для хранения дополнительных диалоговое окно сведения об инициализации. Это включает первоначальные строки, хранящиеся в поле со списком. Формат этого ресурса не предназначен для вручную редактировать, но управляется Visual C++.
Visual C++ и RT_DLGINIT ресурса не требуется использовать соответствующие функции MFC, поскольку есть API альтернативой использованию информации в ресурсе. С помощью Visual C++ делает его гораздо легче писать, поддерживать и перевести приложение в долгосрочной перспективе.
Базовая структура ресурса RT_DLGINIT выглядит следующим образом:
+---------------+nbsp; \
| Управлять ID | UI&NT |
+---------------+ |
| Сообщение # | UINT |
+---------------+ |
|length данных | DWORD |
+---------------+ | Повторить
| Данные | Переменной длины | для каждого элемента управления
| ... | и формат | и сообщение
+---------------+ /
| 0 | БАЙТ
+---------------+
Неоднократные секция содержит Идентификатор элемента управления, чтобы отправить сообщение, сообщение # отправки (обычного сообщения Windows) и переменной длины данных. Windows сообщение отправляется в форме:
SendDlgItemMessage (lt;Идентификатор элемента управления >, < сообщение # > 0 и <Data>)
Это весьма общий формат, позволяя любого сообщения Windows и содержание данных. Редактор ресурсов Visual C++ и MFC поддерживают только ограниченное подмножество сообщений Windows: CB_ADDSTRING для первоначального выбора списка для поля со списком (данные — это текстовая строка).
Технические примечания по номеру |nbsp; Технические примечания по категориям