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.
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.
[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 |
---|---|
|
Define um novo estilo de janela estendido. |
|
Define um novo identificador de instância do aplicativo. |
|
Define um novo identificador da janela filho. A janela não pode ser uma janela de nível superior. |
|
Define um novo estilo de janela . |
|
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. |
|
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.
[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
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
Conceitual
getWindowLongPtr
de referência de