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
Referência