Compartilhar via


Função CallWindowProcA (winuser.h)

Passa informações de 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 de janela anterior. Se esse valor for obtido chamando a função GetWindowLong com o parâmetro nIndex definido como GWL_WNDPROC ou DWL_DLGPROC, ele será, na verdade, o endereço de uma janela ou procedimento de caixa de diálogo ou um valor interno especial significativo apenas para CallWindowProc.

[in] hWnd

Digite: HWND

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

[in] Msg

Tipo: UINT

A mensagem.

[in] wParam

Tipo: WPARAM

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

[in] lParam

Tipo: LPARAM

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

Valor retornado

Tipo: LRESULT

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

Comentários

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 todas as 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 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 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 The C++ Programming Language, Second Edition, by 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

Observação

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. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll
Conjunto de APIs ext-ms-win-ntuser-window-l1-1-4 (introduzido no Windows 10, versão 10.0.14393)

Confira também

Conceitual

Getwindowlong

Referência

SetClassLong

Setwindowlong

Procedimentos de janela