Compartir a través de


Función CallWindowProcA (winuser.h)

Pasa la 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 de

Procedimiento de ventana anterior. Si este valor se obtiene llamando a la función de 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 que solo tiene sentido para CallWindowProc.

[in] hWnd

Tipo: HWND

Identificador del procedimiento de ventana para recibir el mensaje.

[in] Msg

Tipo: UINT

Mensaje.

[in] wParam

Tipo: WPARAM de

Información adicional específica del mensaje. El contenido de este parámetro depende del valor del parámetro msg de .

[in] lParam

Tipo: LPARAM

Información adicional específica del mensaje. El contenido de este parámetro depende del valor del parámetro msg de .

Valor devuelto

Tipo: LRESULT

El valor devuelto especifica el resultado del procesamiento del mensaje y depende del mensaje enviado.

Observaciones

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 de WNDPROC de 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 de 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 de 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 Subclasing a Window

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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winuser.h (incluya Windows.h)
biblioteca de User32.lib
DLL de User32.dll
conjunto de API de ext-ms-win-ntuser-window-l1-1-4 (introducido en Windows 10, versión 10.0.14393)

Consulte también

conceptual de

GetWindowLong

de referencia de

SetClassLong

setWindowLong

procedimientos de ventana de