Compartilhar via


Função CallWindowProcA (winuser.h)

Passa informações da mensagem para o procedimento de janela especificado.

Sintaxe

LRESULT CallWindowProcA(
  [in] WNDPROC lpPrevWndFunc,
  [in] HWND    hWnd,
  [in] UINT    Msg,
  [in] WPARAM  wParam,
  [in] LPARAM  lParam
);

Parâmetros

[in] lpPrevWndFunc

Tipo: WNDPROC

O procedimento da janela anterior. Se esse valor for obtido chamando a função GetWindowLong com o parâmetro nIndex definido como GWL_WNDPROC ou DWL_DLGPROC, na verdade é o endereço de um procedimento de janela ou caixa de diálogo ou um valor interno especial significativo apenas para CallWindowProc.

[in] hWnd

Tipo: HWND

Um identificador para o procedimento de janela para receber a mensagem.

[in] Msg

Tipo: UINT

A mensagem.

[in] wParam

Tipo: WPARAM

Informações adicionais específicas da mensagem. O conteúdo desse parâmetro depende do valor do parâmetro Msg.

[in] lParam

Tipo: LPARAM

Informações adicionais específicas da mensagem. O conteúdo desse parâmetro depende do valor do parâmetro Msg.

Valor de retorno

Tipo: LRESULT

O valor retornado especifica o resultado do processamento da mensagem e depende da mensagem enviada.

Observações

Use a função CallWindowProc para subclasse de janela. Normalmente, todas as janelas com a mesma classe compartilham um procedimento de janela. Uma subclasse é uma janela ou um conjunto de janelas com a mesma classe cujas mensagens são interceptadas e processadas por outro procedimento de janela (ou procedimentos) antes de serem passadas para o procedimento de janela da classe.

A função SetWindowLong cria a subclasse alterando o procedimento de janela associado a uma janela específica, fazendo com que o sistema chame o novo procedimento de janela em vez do anterior. Um aplicativo deve passar mensagens não processadas pelo novo procedimento de janela para o procedimento de janela anterior chamando CallWindowProc. Isso permite que o aplicativo crie uma cadeia de procedimentos de janela.

Se STRICT for definido, o parâmetro lpPrevWndFunc terá o tipo de dados WNDPROC. O tipo de WNDPROC é declarado da seguinte maneira:

LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM); 

Se STRICT não estiver definido, o parâmetro lpPrevWndFunc terá o tipo de dados FARPROC. O tipo de FARPROC é declarado da seguinte maneira:

int (FAR WINAPI * FARPROC) () 

Em C, a declaração FARPROC indica uma função de retorno de chamada que tem uma lista de parâmetros não especificada. No C++, no entanto, a lista de parâmetros vazia na declaração indica que uma função não tem parâmetros. Essa distinção sutil pode quebrar o código descuidado. Veja a seguir uma maneira de lidar com essa situação:

#ifdef STRICT 
  WNDPROC MyWindowProcedure 
#else 
  FARPROC MyWindowProcedure 
#endif 
... 
  lResult = CallWindowProc(MyWindowProcedure, ...) ; 

Para obter mais informações sobre funções declaradas com listas de argumentos vazias, consulte A Linguagem de Programação C++, Segunda Edição por Bjarne Stroustrup.

A função CallWindowProc manipula a conversão Unicode para ANSI. Você não poderá aproveitar essa conversão se chamar o procedimento de janela diretamente.

Exemplos

Para obter um exemplo, consulte Subclasse de uma janela

Nota

O cabeçalho winuser.h define CallWindowProc como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winuser.h (inclua Windows.h)
biblioteca User32.lib
de DLL User32.dll
conjunto de API ext-ms-win-ntuser-window-l1-1-4 (introduzido no Windows 10, versão 10.0.14393)

Consulte também

Conceitual

GetWindowLong

de referência de

SetClassLong

SetWindowLong

procedimentos de janela