Erro: BN_DOUBLECLICKED Message Handler não acertos na caixa de diálogo MFC

Traduções deste artigo Traduções deste artigo
ID do artigo: 247323 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

No Windows CE usando as classes MFC, quando você adiciona que um manipulador de mensagem BN_DOUBLECLICKED para um botão em uma caixa de diálogo ou uma janela, o manipulador não é chamado quando o botão é clicado duas vezes. O manipulador é chamado no Microsoft Windows 95, Microsoft Windows 98, Microsoft Windows NT 4.0 e Microsoft Windows 2000.

Causa

Esse problema é devido a um erro no sistema operacional Windows CE.

Resolução

Uma resolução possível é adicionar um manipulador de BN_CLICKED do botão. Dentro do manipulador, usar código semelhante ao seguinte para testar se o botão foi clicado nos últimos poucos milissegundos:
  static BOOL s_bLastClicked = TRUE;
  static DWORD s_dwTickCount = 0;
  if (s_bLastClicked)
  {
    DWORD dwTickCount = GetTickCount();
    if ((dwTickCount - s_dwTickCount) < 500) //Last click less than 500ms?
    {
      s_bLastClicked = FALSE; //Was double-clicked, don't test next time...

      //Assume a double click...
      //Do your double-click code here...
    }
    s_dwTickCount = dwTickCount;
  }
  else
     s_bLastClicked = TRUE;
				
manualmente adicionando CS_DBLCLKS no estilo de classe de janela e adicionando BS_NOTIFY estilo para o botão não ajuda. No entanto, esse processo manual permitem que a mensagem a ser enviada quando em execução em outras plataformas além do Windows CE.

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Etapas para reproduzir o problema

  1. Crie um novo aplicativo baseado em diálogo usando WCE MFC AppWizard . Aceitar todos os valores padrão e clique em Concluir .
  2. No método OnInitDialog , adicione o código a seguir antes da instrução return:
    SetClassLong(m_hWnd, GCL_STYLE, GetClassLong(m_hWnd, GCL_STYLE) | CS_DBLCLKS);
  3. Adicione um botão para a caixa de diálogo. Clique com o botão direito do mouse e clique em Propriedades . Clique na guia estilos e marque a caixa de seleção Notificar .
  4. Use ClassWizard clicando no menu Exibir e selecionando o item de menu ClassWizard . Na seção Identificações de objeto , clique em IDC_BUTTON1 . Na seção de mensagens , clique na mensagem BN_DOUBLECLICKED . Clique em Adicionar função e, em seguida, clique em Editar código .
  5. Coloque um ponto de interrupção no manipulador de mensagem BN_DOUBLECLICKED do botão.
  6. Criar o aplicativo e executá-lo quando acabar a construção.
Você deve observar que o ponto de interrupção não obter atingido quando em execução no emulador ou quando em execução no dispositivo. Se você executar as etapas acima em um aplicativo Win32 não está sendo executado no Windows CE, o manipulador de funciona conforme o esperado.

Propriedades

ID do artigo: 247323 - Última revisão: domingo, 23 de fevereiro de 2014 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft Windows CE Toolkit for Visual C++ 6.0 nas seguintes plataformas
    • Microsoft Foundation Class Library 4.2
Palavras-chave: 
kbnosurvey kbarchive kbmt kbbug kbbutton KB247323 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: 247323

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