Error: Controlador de mensajes BN_DOUBLECLICKED no aciertos en el cuadro de diálogo MFC

Seleccione idioma Seleccione idioma
Id. de artículo: 247323 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

En Windows CE utilizando las clases MFC, al agregar que un controlador de mensaje BN_DOUBLECLICKED para un botón en un cuadro de diálogo o en una ventana, el controlador no se llama cuando el botón se hace doble clic en. Se llama al controlador en Microsoft Windows 95, Microsoft Windows 98, Microsoft Windows NT 4.0 y Microsoft Windows 2000.

Causa

Este problema es debido a un error en el sistema operativo Windows CE.

Solución

Una posible solución es agregar un controlador BN_CLICKED para el botón. Dentro del controlador, utilice código similar al siguiente para comprobar si el botón se hizo clic en el último pocos milisegundos:
  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 agregar CS_DBLCLKS al estilo de clase de ventana y agregar el BS_NOTIFY estilo para el botón no ayuda. Sin embargo, este proceso manual permite el mensaje se envíe cuando se ejecuta en otras plataformas además Windows CE.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Pasos para reproducir este comportamiento

  1. Cree una nueva aplicación basada en cuadros de diálogo utilizando el Asistente para aplicaciones MFC de WCE . Aceptar todos los valores predeterminados y haga clic en Finalizar .
  2. En el método OnInitDialog , agregue el código siguiente antes de la instrucción return:
    SetClassLong(m_hWnd, GCL_STYLE, GetClassLong(m_hWnd, GCL_STYLE) | CS_DBLCLKS);
  3. Agregue un botón en el cuadro de diálogo. Haga clic con el botón secundario del mouse y haga clic en Propiedades . Haga clic en la ficha estilos y seleccione la casilla de verificación Notificar .
  4. Utilizar pero haciendo clic en el menú Ver y seleccionando el elemento de menú ClassWizard . En la sección de Identificadores de objeto , haga clic en IDC_BUTTON1 . En la sección de mensajes , haga clic en el mensaje BN_DOUBLECLICKED . Haga clic en Agregar función y, a continuación, haga clic en Modificar código .
  5. Coloque un punto de interrupción en el controlador de mensaje BN_DOUBLECLICKED para el botón.
  6. Generar la aplicación y ejecutarla cuando finalice la creación.
Observa que el punto de interrupción no obtener visita cuando está ejecutando en el emulador o cuando se ejecuta en el dispositivo. Si realiza los pasos anteriores en una aplicación Win32 no ejecutándose en Windows CE, el controlador funciona como esperaba.

Propiedades

Id. de artículo: 247323 - Última revisión: domingo, 23 de febrero de 2014 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Windows CE Toolkit for Visual C++ 6.0 sobre las siguientes plataformas
    • Microsoft Foundation Class Library 4.2
Palabras clave: 
kbnosurvey kbarchive kbmt kbbug kbbutton KB247323 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 247323

Enviar comentarios

 

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