CallWindowProc функция передает сообщение информацию в процедуру указанного окна.
() LRESULT CallWindowProc WNDPROC lpPrevWndFunc, / / указатель предыдущей процедуреHWNDhWnd, / / дескриптор окнаUINTMSG, // messageWPARAMwParam, / / сначала сообщение параметрLPARAMlParam / / второй параметр message);
Если это значение получается путем вызова функции GetWindowLong с параметром nIndex , GWL_WNDPROC или DWL_DLGPROC, это на самом деле либо адрес процедуру диалогового окна или окна, или маркер, представляющий этот адрес.
Возвращаемое значение указывает результат обработки сообщений и зависит это сообщение отправлено.
Используйте функцию CallWindowProc для окон подклассы. Обычно все окна с того же класса разделяют одну оконную процедуру. Подкласс — это окно или набор окон с того же класса, чьи сообщения перехвачены и обработаны другой процедуре окна (или процедуры) перед передачей в процедуру окна класса.
Функция SetWindowLong создает подкласс, изменив процедуру окна, связанный с конкретной окном, вызывая системы для вызова новой процедуре окна вместо предыдущего. Приложение должно пройти все сообщения по процедуре окна предыдущей процедурой окна не обрабатывается путем вызова CallWindowProc. Это позволяет приложению создать цепь окна процедур.
Если определен STRICT, параметр lpPrevWndFunc имеет тип данных WNDPROC. Тип WNDPROC объявляется следующим
LRESULT (ОБРАТНОГО ВЫЗОВА * WNDPROC) (HWND, UINT, WPARAM, LPARAM)
Если STRICT не задан, параметр lpPrevWndFunc имеет тип данных FARPROC. FARPROC тип объявляется следующим
int (далеко WINAPI * FARPROC))
В C FARPROC Декларация указывает функцию обратного вызова, которая имеет список неуказанных параметров. В C++ однако список пустой параметров в Декларации указывает, что функция не имеет параметров. Это тонкое различие может нарушить неосторожного кода. Ниже приводится один из способов для обработки этой ситуации:
# ifdef СТРОГОЙ WNDPROC MyWindowProcedure # else FARPROC MyWindowProcedure... # endif lResult = CallWindowProc (MyWindowProcedure,...)
Дополнительную информацию о функциях, объявленные с пустыми аргументов списки ссылаются на языке программирования C++, второе издание, с Бьерном Страуструпом.
Windows NT: CallWindowProc функция обрабатывает преобразование Юникод в ANSI. Если напрямую вызвать процедуру окна не могут воспользоваться преимуществами данного преобразования.
nbsp; Windows &NT: требует версии 3.1 или более поздней версии.
Windows:Требует Windows 95 или более поздней версии.
Windows CE:Требует версии 1.0 или более поздней версии.
Заголовок:Объявленные в winuser.h.
Импорта библиотеки:Используйте user32.lib.
Юникод:В версии Юникода и ANSI в Windows NT.
Обзор процедуры окна, функции процедуру окна, GetWindowLong, SetClassLong, SetWindowLong