PROBLEMA: Problema com o controle ScrollBar ao ativado no local

Traduções deste artigo Traduções deste artigo
ID do artigo: 108942 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Não é possível usar um controle de filho ScrollBar dentro de uma janela que será usada como a janela no local em um aplicativo recipiente.

Sintomas

Controle ScrollBar não gerará mensagens WM_VSCROLL ou WM_HSCROLL para sua janela pai.

Causa

Uma maneira de entender esse problema é examinar o caso em que você tiver um aplicativo de recipiente OLE que insere um objeto capaz in-loco si mesma usando a opção de menu Inserir objeto.

Quando o objeto é criado e se o aplicativo recipiente permite que o objeto para incorporar próprio in-loco no aplicativo recipiente, ele irá definir o pai da sua janela de edição para ser uma janela que pertence o recipiente.

Portanto, uma situação ocorre em que dois aplicativos estejam em execução; ou seja, o recipiente e o servidor. O aplicativo de servidor criados e possui o procedimento de janela para uma janela que o objeto reside; no entanto, o pai desta janela é uma janela do aplicativo recipiente.

Imagine agora que o objeto é edição janela (criado pelo servidor e pai pelo contêiner) contém um controle de filho ScrollBar. Quando o usuário clica no controle ScrollBar usando o botão esquerdo do mouse, uma mensagem WM_LBUTTONDOWN é gerada que obtém manipulados internamente pelo código de controle do Windows ScrollBar filho.

Este código faz uma verificação para garantir que a fila de mensagem que apenas forneceu esta mensagem também é de propriedade pelo aplicativo ativo atual. Se não, a mensagem não será processada mais e mensagens da barra de rolagem não serão enviadas ao pai do controle ScrollBar.

Esse é o caso com o cenário in-loco descrito acima e a raiz do problema.

O aplicativo ativo é o aplicativo recipiente, mas a fila de mensagens entregues a mensagem de barra de rolagem pertence ao aplicativo do servidor.

Também observe que esse problema não se aplica a edição janelas com barras de rolagem que foram criadas usando o estilo WS_HSCROLL ou WS_VSCROLL in-loco. A mensagem de processamento para essas barras de rolagem é ligeiramente diferente do ScrollBar controles de filho.

Resolução

Em vez de criar um controle filho com a classe "barra de rolagem", crie uma nova classe de janela (por exemplo, MYSCROLL) cujo procedimento de janela encaminha mensagens WM_VSCROLL e WM_HSCROLL para seu pai.

Em seguida, você pode criar janelas dessa classe com WS_HSCROLL ou WS_VSCROLL. Em seguida posicione essas janelas da mesma forma que seria posicionar controles ScrollBar. Quando você ativa/desativar barra de rolagem, use o SB_HORZ SB_VERT sinalizadores na chamada para EnableScrollBar.

Observação : você deve ter uma linha de pixels da área de cliente da janela do pouco visível ou Windows irá ocultar a barra de rolagem horizontal. Isso não se aplica a barra de rolagem vertical; ou seja, você não precisa ter uma coluna de pixels visíveis.

Propriedades

ID do artigo: 108942 - Última revisão: sexta-feira, 3 de outubro de 2003 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft OLE 2.0
  • Microsoft OLE 2.01
Palavras-chave: 
kbmt kbinplaceact kbprb kbprogramming KB108942 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 108942
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com