Compartilhar via


Função SetWindowLongPtrA (winuser.h)

Altera um atributo da janela especificada. A função também define um valor no deslocamento especificado na memória da janela extra.

Observação Para escrever um código compatível com versões de 32 bits e 64 bits do Windows, use SetWindowLongPtr. Ao compilar para o Windows de 32 bits, SetWindowLongPtr é definido como uma chamada para a função SetWindowLong .

 

Sintaxe

LONG_PTR SetWindowLongPtrA(
  [in] HWND     hWnd,
  [in] int      nIndex,
  [in] LONG_PTR dwNewLong
);

Parâmetros

[in] hWnd

Tipo: HWND

Um identificador para a janela e, indiretamente, a classe à qual a janela pertence. A função SetWindowLongPtr falhará se o processo que possui a janela especificada pelo parâmetro hWnd estiver em um privilégio de processo mais alto na hierarquia da UIPI do que o processo em que o thread de chamada reside.

Windows XP/2000: a função SetWindowLongPtr do falhará se a janela especificada pelo parâmetro hWnd não pertencer ao mesmo processo que o thread de chamada.

[in] nIndex

Tipo: int

O deslocamento baseado em zero para o valor a ser definido. Os valores válidos estão no intervalo zero até o número de bytes de memória de janela extra, menos o tamanho de um LONG_PTR. Para definir qualquer outro valor, especifique um dos valores a seguir.

Valor Significado
GWL_EXSTYLE
-20
Define um novo estilo de janela estendido.
GWLP_HINSTANCE
-6
Define um novo identificador de instância do aplicativo.
GWLP_ID
-12
Define um novo identificador da janela filho. A janela não pode ser uma janela de nível superior.
GWL_STYLE
-16
Define um novo estilo de janela .
GWLP_USERDATA
-21
Define os dados do usuário associados à janela. Esses dados são destinados ao uso pelo aplicativo que criou a janela. Seu valor é inicialmente zero.
GWLP_WNDPROC
-4
Define um novo endereço para o procedimento de janela.
 

Os valores a seguir também estão disponíveis quando o parâmetro hWnd identifica uma caixa de diálogo.

Valor Significado
DWLP_DLGPROC
DWLP_MSGRESULT + sizeof(LRESULT)
Define o novo ponteiro para o procedimento da caixa de diálogo.
DWLP_MSGRESULT
0
Define o valor retornado de uma mensagem processada no procedimento da caixa de diálogo.
DWLP_USER
DWLP_DLGPROC + sizeof(DLGPROC)
Define novas informações extras que são privadas para o aplicativo, como identificadores ou ponteiros.

[in] dwNewLong

Tipo: LONG_PTR

O valor de substituição.

Valor de retorno

Tipo: LONG_PTR

Se a função for bem-sucedida, o valor retornado será o valor anterior do deslocamento especificado.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Se o valor anterior for zero e a função for bem-sucedida, o valor retornado será zero, mas a função não limpará as últimas informações de erro. Para determinar o êxito ou falha, desmarque as últimas informações de erro chamando SetLastError com 0 e, em seguida, chame SetWindowLongPtr. A falha de função será indicada por um valor retornado igual a zero e um GetLastError resultado diferente de zero.

Observações

Determinados dados de janela são armazenados em cache, portanto, as alterações feitas usando SetWindowLongPtr não entrarão em vigor até que você chame a função SetWindowPos.

Se você usar SetWindowLongPtr com o índice GWLP_WNDPROC para substituir o procedimento de janela, o procedimento de janela deverá estar em conformidade com as diretrizes especificadas na descrição da função de retorno de chamada WindowProc.

Se você usar SetWindowLongPtr com o índice DWLP_MSGRESULT para definir o valor retornado de uma mensagem processada por um procedimento de caixa de diálogo, o procedimento da caixa de diálogo deverá retornar VERDADEIRO diretamente depois. Caso contrário, se você chamar qualquer função que resulte no procedimento da caixa de diálogo recebendo uma mensagem de janela, a mensagem de janela aninhada poderá substituir o valor retornado definido usando DWLP_MSGRESULT.

Chamar SetWindowLongPtr com o índice GWLP_WNDPROC cria uma subclasse da classe de janela usada para criar a janela. Um aplicativo pode subclasse uma classe do sistema, mas não deve subclasse uma classe de janela criada por outro processo. A função SetWindowLongPtr cria a subclasse da janela alterando o procedimento de janela associado a uma classe de 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.

Reserve memória de janela extra especificando um valor diferente de zero no membro cbWndExtra da estrutura de WNDCLASSEX usada com a função RegisterClassEx.

Não chame SetWindowLongPtr com o índice GWLP_HWNDPARENT para alterar o pai de uma janela filho. Em vez disso, use a função SetParent.

Se a janela tiver um estilo de classe de CS_CLASSDC ou CS_PARENTDC, não defina os estilos de janela estendidos WS_EX_COMPOSITED ou WS_EX_LAYERED.

Chamar SetWindowLongPtr para definir o estilo em uma barra de progresso redefinirá sua posição.

Nota

O cabeçalho winuser.h define SetWindowLongPtr como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do 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-windowclass-l1-1-0 (introduzido no Windows 8)

Consulte também

CallWindowProc

Conceitual

getWindowLongPtr

de referência de

RegisterClassEx

SetParent

WNDCLASSEX

classes de janela

WindowProc