SetWindowLong

O SetWindowLong função é alterado um atributo da janela especificada. A função também define um 32-bit (longo) valor no deslocamento especificado para a adicional memória janela de uma janela.

LONG SetWindowLong ( HWND  hWnd, / / identificador da janelaintnIndex, / / deslocamento do valor a ser definidoLongodwNewLong / / novo valor);
 

Parâmetros

hWnd
Identificador para a janela e, indiretamente, a classe à qual pertence a janela.
nIndex
Especifica o deslocamento baseada em zero para o valor a ser definido. Os valores válidos estão no intervalo zero através de número de bytes de adicional memória janela, menos 4; por exemplo, se você especificou 12 ou mais bytes de memória extra, um valor igual a 8 seria um índice para o terceiro 32-bit inteiro. Para definir qualquer outro valor, especifique um dos seguintes valores:
Valor Ação
GWL_EXSTYLE Define um novo estilo de janela estendido.
GWL_STYLE Define um novo estilo de janela.
GWL_WNDPROC Define um novo endereço para o procedimento de janela.
GWL_HINSTANCE Define um novo identificador de instância de aplicativo.
GWL_ID Define um novo identificador de janela.
GWL_USERDATA Define o 32-bit valor associado com a janela. Cada janela possui um correspondente 32-bit valor destinado ao uso pelo aplicativo que criou a janela.

Os valores a seguir também estão disponíveis quando o hWnd parâmetro identifica uma caixa de diálogo:
Valor Ação
DWL_DLGPROC Define o novo endereço do procedimento de caixa de diálogo.
DWL_MSGRESULT Define o valor de retorno de uma mensagem processada no procedimento de caixa de diálogo.
DWL_USER Define novas informações extras que são particulares para o aplicativo, such as alças ou ponteiros.

dwNewLong
Especifica o valor de substituição.

Retornar valores

Se a função for bem-sucedido, o valor de retorno é o valor anterior da 32-bit especificado inteiro.

Se a função falhar, o valor de retorno é zero. Para informações de erro estendidas get, chamar GetLastError.

Se o valor anterior da 32-bit especificado inteiro é zero e a função for bem-sucedido, o valor de retorno é zero, mas a função não limpa as últimas informações de erro. Isso torna difícil determinar o sucesso ou fracasso. Para lidar com isso, você deve limpar as últimas informações de erro chamando SetLastError(0) antes de chamar SetWindowLong. Em seguida, falha de função será indicada por um valor de retorno de zero e um resultado de GetLastError é diferente de zero.

Observações

O SetWindowLong função falhará se a janela especificada pelo hWnd parâmetro não pertence ao mesmo processo como o thread de chamada.

Determinados dados janela é armazenado em cache, para que as alterações feitas usando SetWindowLong não terão efeito até que você chamar o SetWindowPos função.

Se você usar o SetWindowLong com o índice GWL_WNDPROC para substituir o procedimento de janela, o procedimento janela deve estar em conformidade com as diretrizes especificadas na descrição das WindowProc função callback.

Se você usar SetWindowLong com o índice DWL_MSGRESULT para definir o valor de retorno para uma mensagem processada através de um processo de diálogo, você deve retornar TRUE diretamente posteriormente. Caso contrário, se você chamar qualquer função que resulta no seu procedimento de diálogo recebe uma mensagem de janela, a mensagem de janela aninhada poderia substituir o valor de retorno que você definir usando DWL_MSGRESULT.

Chamar SetWindowLong com o índice GWL_WNDPROC cria uma subclasse da classe janela usado para criar a janela. Um aplicativo pode subclasse uma classe de sistema, mas deve não subclasse um classe de janela criado por outro processo. O SetWindowLong função cria a subclasse janela, alterando o procedimento janela associado com uma classe janela específica, fazendo com que o sistema para chamar o procedimento nova janela instead of anterior. Um aplicativo deve transmitir qualquer mensagem não processada pelo novo procedimento de janela para o procedimento janela anterior por chamado CallWindowProc. Isso permite que o aplicativo para criar uma Cadeia de procedimentos de janela.

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

Você não deve chamar SetWindowLong com o índice GWL_HWNDPARENT para alterar o pai de uma janela filho. Em vez disso, use o SetParent função.

Windows CE: O nÍndice parâmetro deve ser um múltiplo de 4 bytes.

Não é com suporte unaligned acessar.

Não há suporte para os seguintes valores de parâmetro nIndex:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

Versões do Windows CE 2.0 e posteriores suportam o valor DWL_DLGPROC in a nÍndice parâmetro, mas não Windows CE 1.0.

QuickInfo

nbsp; Windows &NT: requer a versão 3.1 ou posterior.
Windows:Requer o Windows 95 ou posterior.
Windows CE:Requer versão 1.0 ou posterior.
Cabeçalho:Declarado em WinUser. h.
Biblioteca de importação:Use user32.lib.
Unicode:Implementado como versões Unicode e ANSI no Windows NT.

Ver também

Visão geral da janela Classes, funções de classe de janela, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX

Index