Función CallWindowProcA (winuser.h)

Pasa información del mensaje al procedimiento de ventana especificado.

Sintaxis

LRESULT CallWindowProcA(
  [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 mediante una llamada a la función GetWindowLong con el parámetro nIndex establecido en GWL_WNDPROC o DWL_DLGPROC, es realmente 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 no se define STRICT, 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 especificada. 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 Lenguaje de programación C++, Segunda edición, por 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, vea 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
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 (incluir 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

GetWindowLong

Referencia

SetClassLong

SetWindowLong

Procedimientos de ventana