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

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.

247323
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
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.
CE específico haga doble clic WM_LBUTTONDBLCLK BN_CLICKED BN_DOUBLECLICKED WM_LBUTTONDOWN WM_LBUTTONUP

Warning: This article has been translated automatically

Propiedades

Id. de artículo: 247323 - Última revisión: 02/23/2014 13:56:45 - Revisión: 2.0

  • Microsoft Windows CE Toolkit for Visual C++ 6.0
  • kbnosurvey kbarchive kbmt kbbug kbbutton KB247323 KbMtes
Comentarios