Cómo llamar al control DLL ActiveX creado por vb en vc
1. Ejecute VC 6.0 y utilice el Asistente para programas MFC para crear una nueva aplicación MFC basada en diálogos.
2. Utilice #import para importar el componente de servicio, copie PRJADO.DLL al directorio del proyecto VC, abra el archivo STDAFX.H y agregue el siguiente código:
# import " prjado.dll" p>
usando el espacio de nombres prjado;
Este código debe colocarse en:
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ insertará declaraciones adicionales inmediatamente después y antes de #endif.
Importar el dll en el archivo stdafx.h permite al compilador conectar la biblioteca de tipos del dll en tiempo de ejecución. #import puede generar automáticamente una definición de GUID y generar automáticamente un paquete para el objeto clsado. Al mismo tiempo, puede enumerar los tipos que puede encontrar en la clase. VC++ generará automáticamente dos archivos durante la compilación:
Un archivo de encabezado (.tlh), que contiene los tipos enumerados y la biblioteca de tipos. Definición de objetos;
Un archivo de implementación (.tli) encapsula los métodos en el modelo de objetos de la biblioteca de tipos.
El espacio de nombres se utiliza para definir un espacio de nombres. El uso de unsing puede convertir el contexto de tipo actual a la ubicación determinada por el espacio de nombres, de modo que podamos acceder a los métodos del componente de servicio.
Si modificamos el programa del componente de servicio, se recomienda eliminar estos dos archivos y recompilar el proyecto por completo para que el compilador pueda volver a enumerar los atributos y funciones de la clase.
3. Agregue un nuevo botón en el cuadro de diálogo y establezca el título en "Prueba". Haga doble clic en el botón "Probar" y el sistema le solicitará que cree una nueva función OnButton1 correspondiente al evento CLICK del botón. El código específico de la función OnButton1 es el siguiente
HRESULT hresult;
CLSID clsid;
CoInitialize(NULL);
/ /Inicializar la interfaz COM
hresult=CLSIDFromProgID(OLESTR("prjado.clsado"), &clsid
//Obtener el CLSID del componente
_clsado *t;
//Esta es la clase que definimos en PRJADO.DLL
hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_clsado),(LPVOID *) &t );
Inicialice CLSADO. El primer parámetro de CoCreateInstance() es el CLSID (código de clase) del objeto. Este código de 128 bits identifica de forma única el servicio del componente. colocado en el registro del sistema; el segundo parámetro generalmente se establece en NULL; el tercer parámetro se usa para especificar el entorno de ejecución del objeto, como remoto o local, aquí se establece en CLSCTX_INPROC_SERVER, lo que indica que el componente del servicio es un. DLL; el cuarto parámetro especifica el ID de la interfaz de comunicación con el objeto, que también es una codificación de 128 bits; el quinto parámetro es el puntero de interfaz utilizado para recibir el objeto.
if(FAILED(hresult))
{
AfxMessageBox("Error al inicializar el componente de servicio");
return;
p>
}
//Si la inicialización falla, aparecerá un cuadro de diálogo emergente y luego saldrá del programa
t->ado_Init(
//Llamar a la función de inicialización
t->ado_add("Llamar al componente desde VC"); p>
t->ado_UnInit ();
//Llamar a la función de cierre de conexión
t->Release()
//Release el puntero de la interfaz
CoUninitialize();
// Cerrar la conexión a la biblioteca COM
AfxMessageBox("Se completó la llamada al componente de servicio"); p>
Después de guardar el proyecto, compilar y ejecutar el programa VC y hacer clic en el botón "Probar". Después de esperar el mensaje de finalización, podemos abrir la base de datos y ver el registro que acabamos de agregar.
Resumen:
En resumen, en el desarrollo de aplicaciones reales, utilizando tecnología de componentes, podemos realizar programación híbrida VC y VB y aprovechar al máximo las ventajas de las herramientas de desarrollo. acelerar el progreso del desarrollo del software y mejorar en gran medida la mantenibilidad y usabilidad del programa.