Цієї записці описується внутрішніх повідомлень Windows і ресурс форматів MFC. Про це пояснює реалізації Рамкової і допомогти вам в налагодженні вашого застосування. За пригодами хоча ця інформація є офіційно не підтримується, ви можете використовувати цю інформацію для просунутих реалізацій.
Примітка містить MFC деталей приватних реалізації; весь вміст можуть бути змінені в майбутньому. MFC приватних повідомлень Windows мають значення в сферу тільки одна заявка, але зміниться в майбутньому містити системної повідомлень.
Діапазон MFC приватних повідомлень Windows і типів ресурс є діапазону зарезервований "система" Виділити Microsoft Windows. В даний час не всіх чисел у діапазонах, які використовуються, і в майбутньому, нові номери діапазону можуть бути використані. В даний час використовуються числа можуть змінюватися.
MFC приватних Windows не в діапазоні 0x360 > повідомлення; 0x37F.
MFC приватних ресурс типи, в діапазоні 0xF0 > 0xFF.
MFC приватних повідомлень Windows
Ці повідомлення Windows використовується в якості C++ віртуальних функцій де відносно звязку необхідна між об'єкти вікон і де C++ віртуальних функцій не буде відповідної.
Ці приватні повідомлення Windows і відповідного параметра структури були оголошені в заголовку приватних MFC ' AFXPRIV.Н '. Будьте попередив, що будь-який ваш код, який містить цей заголовок може бути спираючись на буде ймовірно, брейк і недокументованих поведінка в майбутньому версії MFC.
У тих рідкісних випадках необхідності обробляти одне з цих повідомлень ви повинні використовувати ON_MESSAGE повідомлення карта макрос і обробляти повідомлення у загальний формат LRESULT, WPARAM, LPARAM.
WM_QUERYAFXWNDPROC
Це повідомлення надсилається до вікна, що створюється. Це дуже рано у процесі створення надсилаються як метод визначення, якщо на WndProc є AfxWndProc. AfxWndProc повертає 1.
| wParam | Не використовується |
| lParam | Не використовується |
| повертає | 1 Якщо оброблено AfxWndProc |
WM_SIZEPARENT
Це повідомлення надсилається на вікно кадр його негайного дітей під час зміни розміру (дзвінкиCFrameWnd::OnSize CFrameWnd::RecalcLayout , який називає CWnd::RepositionBars) щоб змінити розташування регулятор тактів навколо стороні кадру. AFX_SIZEPARENTPARAMS структура містить поточні доступні клієнт прямокутник батьків і HDWP (яка може бути NULL) з яких можна назвати DeferWindowPos , звести до мінімуму, фарбування.
| wParam | Не використовується |
| lParam | Адреса AFX_SIZEPARENTPARAMS структури |
| повертає | Не використовувати (0) |
Ігноруючи повідомлення вказує, що вікно не брати участь у макеті.
WM_SETMESSAGESTRING
Це повідомлення надсилається до рамки вікна запитати його, щоб оновити рядок повідомлення в рядку стану. Рядок Посвідчення "або" на LPCSTR можуть бути визначені (але не обидва).
| wParam | Рядок Посвідчення (або нуль) |
| lParam | LPCSTR рядок (або NULL) |
| повертає | Не використовувати (0) |
WM_IDLEUPDATECMDUI
Це повідомлення надсилається у полі час простоювання здійснити оновлення час простою команда update UI обробників. Якщо вікно (зазвичай контроль бар) обробляє повідомлення, це створює 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 |
| повертає | Правда, якщо новий клієнт прямокутник повернувся, FALSE в іншому випадку |
WM_SIZECHILD
Це повідомлення надсилається на COleResizeBar її власника вікна (через GetOwner) коли користувач змінює розмір межу з маркерами зміни розміру. COleIPFrameWnd , що реагує на це повідомлення, намагаючись змінити розташування рамки вікна, як користувач надіслав.
Нові прямокутник, надана у клієнта координати по відношенню до кадру вікно, яке містить межу, знаходиться вказав на lParam.
| wParam | Не використовувати (0) |
| lParam | LPRECT rectNew |
| повертає | Не використовувати (0) |
WM_DISABLEMODAL
Це повідомлення надсилається до блокування спливаючих вікон, які належать кадр вікно, яке це бути деактивовано. Рамка вікна використовується результат, щоб визначити, чи слід відключити спливаюче вікно.
Можна використовувати для виконання спеціальної обробки у спливаючому вікні, коли кадр вводить модальних держави або зберегти певні спливаючі вікна від отримання вимкнуто. Підказки за допомогою цього повідомлення знищити себе, коли рамка вікна йде в модальне держави, наприклад.
| wParam | Не використовувати (0) |
| lParam | Не використовувати (0) |
| повертає | Non нуль не відключити вікна, 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 є набір і синхронізація області вікна з її активації з батьківського кадру. CMiniFrameWnd повертає не нуль, коли стиль MFS_SYNCACTIVE.
Докладніше перегляньте здійснення CMiniFrameWnd.
WM_ACTIVATETOPLEVEL
Це повідомлення надсилається вікно верхнього рівня коли вікно "верхнього рівня групи" є або активована, або деактивовано. Вікно є частиною групи найвищого рівня, якщо це вікно верхнього рівня, (немає батьків або власника), або він належить таких вікна. Це повідомлення схоже, використовується на WM_ACTIVATEAPP, але працює в ситуаціях, де windows, що належать до різних процесів змішуються в одному вікні ієрархії (загальноприйнята в додатків OLE).
WM_QUERY3DCONTROLS
Це повідомлення надсилається під час створення вікна для визначення, якщо вікно повинні subclassed на CTL3D32.DLL. 3D контролем за промовчанням увімкнуто для CControlBar, CDialog, CPropertySheet і CFormView.
| wParam | Не використовувати (0) |
| lParam | Не використовувати (0) |
| повертає | &Non нуля до підкласу з CTL3D.nbsp; Значення, що повертається використовується для виклику 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 | БАЙТ
+---------------+
Неодноразові розділ містить ID елемента керування, щоб надіслати повідомлення, повідомлення # надіслати (нормальний повідомлення Windows) і змінною довжиною даних. Windows повідомлення надсилається у формі:
SendDlgItemMessage (lt;Керування ID >, < повідомлення #, > 0 & <Data>)
Це дуже загальний формат, що дозволяє будь-яких повідомлень Windows і даних вмісту. Редактор ресурсів Visual c + + і MFC підтримують лише обмежена підмножина Windows повідомлень: CB_ADDSTRING, на початковий список варіантів для поля зі списком (дані — текстовий рядок).
Технічні примітки за номером |nbsp; Технічні примітки за категоріями