C/Visual C - ActiveX dentro de Dialog Bar

 
Vista:

ActiveX dentro de Dialog Bar

Publicado por albert (2 intervenciones) el 02/11/2002 20:03:44
Buenas!
Estoy intentando trabajar con un ActiveX (Botón especial) sobre una Dialog Bar, y resulta que no puedo cazar los mensajes del activeX, en cuestión! acceder a otros ActiveX como EditBox especiales si que puedo des del codigo accediendo al objeto directamente, però quando muevo mi super botón AtiveX plantado en la Dialog Bar... ni caso, se pierde el mensaje, no se genera .... ni idea.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Manejo de eventos de un control ActiveX en una Dialog Bar

Publicado por Alejandro (913 intervenciones) el 31/03/2025 19:32:10
¡Hola, Albert! Trabajar con controles ActiveX en una dialog bar puede ser un poco complicado, especialmente cuando se trata de manejar eventos y mensajes. Aquí hay algunas sugerencias y pasos que puedes seguir para intentar resolver el problema de no poder capturar los mensajes de tu botón ActiveX.

1. Asegúrate de que el Control ActiveX esté registrado



Primero, asegúrate de que el control ActiveX esté correctamente registrado en tu sistema. Puedes hacer esto utilizando `regsvr32` en la línea de comandos:

1
regsvr32 nombre_del_control.ocx

2. Verifica la creación del control



Asegúrate de que el control ActiveX se esté creando correctamente en tu dialog bar. Aquí hay un ejemplo básico de cómo crear un control ActiveX en una dialog bar:

1
2
3
// En tu clase de dialog bar
CWnd* pWnd = new CWnd();
pWnd->CreateControl(CMyActiveX::m_clsid, _T(""), WS_CHILD | WS_VISIBLE, rect, this, 0);

3. Manejo de mensajes



Para manejar los mensajes de un control ActiveX, debes asegurarte de que estás utilizando el método correcto para capturar los eventos. Asegúrate de que tu clase de dialog bar tenga un mapeo de mensajes adecuado. Por ejemplo:

1
2
3
4
BEGIN_MESSAGE_MAP(CMyDialogBar, CDialogBar)
    ON_WM_SIZE()
    ON_BN_CLICKED(IDC_MY_ACTIVEX_BUTTON, &CMyDialogBar::OnMyActiveXButtonClicked)
END_MESSAGE_MAP()

4. Captura de eventos



Si el control ActiveX tiene eventos específicos, como un evento de clic, asegúrate de que estás conectando esos eventos correctamente. Puedes hacer esto utilizando el método `Connect` del control ActiveX. Por ejemplo:

1
2
// Conectar el evento
m_pMyActiveX->Advise(this, &CMyDialogBar::OnMyActiveXEvent);

5. Verifica el envío de mensajes



Asegúrate de que el control ActiveX esté enviando los mensajes correctamente. Puedes usar herramientas como Spy++ para verificar si los mensajes están siendo enviados y recibidos.

6. Revisa la documentación del control



Si el control ActiveX es de terceros, revisa la documentación proporcionada por el fabricante. Puede haber requisitos específicos o métodos que debas seguir para manejar eventos.

7. Ejemplo de manejo de eventos



Aquí tienes un ejemplo básico de cómo manejar un evento de clic en un botón ActiveX:

1
2
3
4
void CMyDialogBar::OnMyActiveXButtonClicked()
{
    AfxMessageBox(_T("¡Botón ActiveX cliqueado!"));
}

8. Debugging



Si aún no puedes capturar los mensajes, considera agregar mensajes de depuración en tu código para rastrear el flujo de ejecución y ver dónde podría estar fallando.

¡Espero que estas sugerencias te sean útiles!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar