Función CallWindowProcW (winuser.h)
Pasa información del mensaje al procedimiento de ventana especificado.
Sintaxis
LRESULT CallWindowProcW(
[in] WNDPROC lpPrevWndFunc,
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
Parámetros
[in] lpPrevWndFunc
Tipo: WNDPROC
Procedimiento de ventana anterior. Si este valor se obtiene llamando a la función GetWindowLong con el parámetro nIndex establecido en GWL_WNDPROC o DWL_DLGPROC, en realidad es la dirección de un procedimiento de ventana o cuadro de diálogo, o un valor interno especial significativo solo para CallWindowProc.
[in] hWnd
Tipo: HWND
Identificador del procedimiento de ventana para recibir el mensaje.
[in] Msg
Tipo: UINT
Mensaje.
[in] wParam
Tipo: WPARAM
Información adicional específica del mensaje. El contenido de este parámetro depende del valor del parámetro Msg .
[in] lParam
Tipo: LPARAM
Información adicional específica del mensaje. El contenido de este parámetro depende del valor del parámetro Msg .
Valor devuelto
Tipo: LRESULT
El valor devuelto especifica el resultado del procesamiento del mensaje y depende del mensaje enviado.
Comentarios
Use la función CallWindowProc para la subclases de ventana. Normalmente, todas las ventanas con la misma clase comparten un procedimiento de ventana. Una subclase es una ventana o un conjunto de ventanas con la misma clase cuyos mensajes son interceptados y procesados por otro procedimiento de ventana (o procedimientos) antes de pasarse al procedimiento de ventana de la clase .
La función SetWindowLong crea la subclase cambiando el procedimiento de ventana asociado a una ventana determinada, lo que hace que el sistema llame al nuevo procedimiento de ventana en lugar del anterior. Una aplicación debe pasar los mensajes no procesados por el nuevo procedimiento de ventana al procedimiento de ventana anterior llamando a CallWindowProc. Esto permite a la aplicación crear una cadena de procedimientos de ventana.
Si se define STRICT , el parámetro lpPrevWndFunc tiene el tipo de datos WNDPROC. El tipo WNDPROC se declara de la siguiente manera:
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
Si strict no está definido, el parámetro lpPrevWndFunc tiene el tipo de datos FARPROC. El tipo FARPROC se declara de la siguiente manera:
int (FAR WINAPI * FARPROC) ()
En C, la declaración FARPROC indica una función de devolución de llamada que tiene una lista de parámetros no especificados. Sin embargo, en C++, la lista de parámetros vacía de la declaración indica que una función no tiene parámetros. Esta distinción sutil puede interrumpir el código sin cuidado. A continuación se muestra una manera de controlar esta situación:
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;
Para obtener más información sobre las funciones declaradas con listas de argumentos vacías, consulte The C++ Programming Language, Second Edition, by Bjarne Stroustrup.
La función CallWindowProc controla la conversión Unicode a ANSI. No puede aprovechar esta conversión si llama directamente al procedimiento de ventana.
Ejemplos
Para obtener un ejemplo, consulte Subclase de una ventana.
Nota
El encabezado winuser.h define CallWindowProc como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h (incluya Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |
Conjunto de API | ext-ms-win-ntuser-window-l1-1-4 (introducido en Windows 10, versión 10.0.14393) |
Consulte también
Conceptual
Referencia
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de