Recibe un mensaje de error "System Error &H80004005" de una aplicación de Visual Basic 6.0, cuando un subclases de control de ActiveX de MFC cualquiera de las clases de ventana implementado por Comctl32.dll

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): 223152
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Un control ActiveX de MFC controlar que subclasifique cualquiera de las clases de ventana implementada por causas de Comctl32.dll el siguiente error se inicia desde un archivo .exe de Visual Basic 6.0.
"Sistema error & H80004005 (-2147467259). Error no especificado"
La versión de depuración del control ActiveX produce una aserción ASSERT en archivo Ctlcore.cpp al final de COleControl::CreateControlWindow, en o cerca de la línea 662.

Este problema se produce sólo cuando generar un archivo .exe desde Visual Basic 6.0 y ejecutarlo desde fuera del entorno de desarrollo Visual Basic.
Causa
Archivos ejecutables de Microsoft Visual Basic no inicializan la biblioteca de control comunes (Comctl32.dll) de forma predeterminada, lo que el CreateEx llamada produciendo errores de COleControl::CreateControlWindow. Llamar a GetLastError() proporciona 0x0000057F - no se puede encontrar la clase de ventana, que indica la biblioteca de control comunes debe inicializarse explícitamente.
Solución
Dentro de la función InitInstance del control ActiveX, realizar una llamada a:
InitCommonControls(void)
o
InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls)
Esto garantiza que Comctl32.dll es cargado y inicializado, independientemente del contenedor se ejecuta el control.

En lugar de llamar a InitCommonControls desde el código del control, también puede llamarlo directamente desde la aplicación de cliente de Visual Basic:
  • Incluye una declaración general para el formulario correspondiente; por ejemplo:
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
  • Agregue una llamada a:
    InitCommonControls					
    en el método Form_Load.
En algunas situaciones, esto puede ser demasiado tarde inicializar la biblioteca de controles comunes. Por lo tanto, se recomienda agregar esta llamada en la función InitInstance del control.
Estado
Este comportamiento es por diseño.
Más información

Pasos para reproducir este comportamiento

  1. Con Visual C++, el Asistente de control ActiveX de MFC, crear un control predeterminado.
  2. En la sección de configuración de control de AppWizard (paso 2 del Asistente para aplicaciones de Visual C++ 6.0), la clase de ventana para la subclase, elija uno de los siguientes: msctls_hotkey32, msctls_progress32, SysTabControl32 msctls_statusbar32, msctls_trackbar32, msctls_updown32, SysAnimate32, SysHeader32, SysListView32, o SysTreeView32.
  3. Genere el control.
  4. Abra Microsoft Visual Basic 6.0 y cree un nuevo proyecto EXE estándar.
  5. En el menú proyecto , haga clic en componentes y seleccione el control que acaba de crear mediante Microsoft Visual C++.
  6. Seleccione este control y que dibuje en el formulario de ventana.
  7. En el menú archivo , haga clic en Crear Project.exe y generar el archivo exe.
  8. Vaya al explorador de Windows y ejecute este archivo ejecutable.
Comctl32.dll VB de MFC

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 223152 - Última revisión: 12/05/2015 13:32:20 - Revisión: 3.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kberrmsg kbtshoot kbcmnctrls kbctrl kbprb KB223152 KbMtes
Comentarios