Erro: O processador de mensagens BN_DOUBLECLICKED não acesso na caixa de diálogo MFC

Traduções de Artigos Traduções de Artigos
Artigo: 247323 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

No Windows CE utilizar classes MFC, quando adiciona que um processador de mensagens BN_DOUBLECLICKED para um botão de uma caixa de diálogo ou uma janela, o processador não é chamado quando faz duplo clique no botão. A rotina de tratamento é chamada no Microsoft Windows 95, Microsoft Windows 98, Microsoft Windows NT 4.0 e Microsoft Windows 2000.

Causa

Este problema é devido a um erro no sistema operativo Windows CE.

Resolução

Uma resolução possível consiste em Adicionar um processador BN_CLICKED do botão. Dentro de processador, utilize código semelhante ao seguinte para verificar se o botão tiver sido clicado nos últimos milissegundos alguns:
  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 adicionar CS_DBLCLKS ao estilo de classe de janela e adicionar BS_NOTIFY estilo para o botão não ajuda. No entanto, este processo manual permitir que a mensagem ser enviada quando utilizar outras plataformas para além do Windows CE.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Passos para reproduzir o comportamento

  1. Crie uma nova aplicação baseada no diálogo utilizando WCE MFC AppWizard . Aceita todos os valores predefinidos e clique em Concluir .
  2. Método OnInitDialog , adicione o seguinte código antes a instrução de retorno:
    SetClassLong(m_hWnd, GCL_STYLE, GetClassLong(m_hWnd, GCL_STYLE) | CS_DBLCLKS);
  3. Adicione um botão à caixa de diálogo. Clique com o botão direito do rato e clique em Propriedades (Properties). Clique no separador de estilos e seleccione a caixa de verificação Notificar .
  4. Utilize ClassWizard clicando no menu Ver e seleccionar o item de menu ClassWizard . Na secção ID de objecto , clique em IDC_BUTTON1 . Na secção de mensagens , clique na mensagem BN_DOUBLECLICKED . Clique em Adicionar função e clique em Editar código .
  5. Coloque um ponto de quebra no processador de mensagens BN_DOUBLECLICKED do botão.
  6. Criar a aplicação e executá-la quando terminar de criar.
Deverá aperceber de que o ponto de interrupção não obter visitas com o emulador ou ao executar no dispositivo. Se efectuar os passos acima de uma aplicação de Win32 não ser executado no Windows CE, a rotina de tratamento funciona como previsto.

Propriedades

Artigo: 247323 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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