Функція CallWindowProc
ФункціяCallWindowProcпередає інформацію повідомлення процедурі заданого вікна.
WNDPROClpPrevWndFunc, // покажчик на попередню процедуру
HWNDhWnd, // дескриптор вікна
UINTMsg, // повідомлення
WPARAMwParam // перший параметр повідомлення
LPARAMlParam // другий параметр повідомлення
[in] Дескриптор віконної процедури, яка приймає повідомлення.
[in] Визначає повідомлення.
[in] Визначає додаткову інформацію, що конкретизує повідомлення. Зміст цього параметра залежить від значенняMsg.
[in] Визначає додаткову інформацію, що конкретизує повідомлення. Зміст цього параметра залежить від значенняMsg.
Величина значення, що повертається визначає результат обробки повідомлення і залежить від переданого повідомлення.
Використовуйте функціюCallWindowProcдля поділу на підкласи вікна. Зазвичай, всі вікна з тим самим класом спільно використовують одну віконну процедуру. Підклас - це вікно або набір вікон з тим самим класом, повідомлення яких перехоплюються і обробляються іншою віконною процедурою (або процедурами) перед тим, як бути посланими у віконну процедуру класу.
ФункціяSetWindowLongстворює підклас, замінюючи віконну процедуру, пов'язану з конкретним вікном, змушуючи систему викликати нову віконну процедуру замість попередньої. Прикладна програма повинна надсилати будь-які повідомлення, не оброблені новою віконною процедурою в попередню віконну процедуру шляхом викликуCallWindowProc. Це дозволяє застосуванню створювати ланцюжок віконних процедур.
Якщо в програмі визначено режим перевірки типівSTRICT, параметрlpPrevWndFuncмає тип данихWNDPROC. ТипWNDPROCоголошується так:
ЯкщоSTRICTне встановлено, параметрlpPrevWndFuncмає тип данихFARPROC. ТипFARPROCоголошується, як зазначено нижче:
За подальшою інформацією щодо функцій, оголошених з порожніми списками параметрів, зверніться доМова програмування C++, Другого Видання, Bjarne Stroustrup.
ФункціяCallWindowProcобробляє перетворенняUnicode-в-ANSI. Ви не отримаєте перетворення, якщо викликаєте віконну процедуру безпосередньо.
ФункціяCallWindowProcWпідтримуєMicrosoft ® Layer for Unicode(MSLU). До того ж, версіяANSIпідтримується, щоб забезпечувати більш узгоджену поведінку всіх операційних системWindows ® Microsoft. Щоб використовувати це, Ви повинні додати деякі файли до вашої програми, як викладено вMicrosoft Layer for Unicodeдля Windows 95/98/Me.
Розміщення та сумісність CallWindowProc