¿Qué personalizaciones admiten OLE y MSHTML?
Encontré algunos ejemplos de uso de MSHTML para renderizar HTML en aplicaciones WinAPI (sin usar MFC, UWP, etc.), como en este ejemplo. No tengo experiencia con OLE y MSHTML, así que quiero saber si puedo implementar algunas cosas antes de intentar profundizar en ello. Específicamente, necesito:
* Manejar clics en los enlaces, por ejemplo – lanzar un navegador externo desde mi aplicación, o realizar otras acciones;
* Usar casillas de verificación y manejar su conmutación (por ejemplo, para establecer algunas variables en mi aplicación);
* Desactivar la selección de texto;
* El HTML debe ser renderizado en mi ventana, es decir, quiero colocarlo en mi ventana como cualquier otro control. También debe admitir la escalabilidad HiDPI.
davy.ai
Usando MSHTML para renderizar HTML en aplicaciones WinAPI
Introducción
Si está considerando utilizar MSHTML para renderizar HTML en su aplicación WinAPI, es posible que tenga algunas preguntas sobre cómo implementar ciertas características. En este artículo, discutiremos algunos requisitos comunes y cómo se pueden lograr con MSHTML.
Manejo de clics de enlace
Para manejar clics de enlace en MSHTML, puede usar la interfaz
DWebBrowserEvents2
. Esta interfaz proporciona eventos comoBeforeNavigate2
yNewWindow3
, que puede utilizar para interceptar clics de enlace y realizar acciones como iniciar un navegador externo.Uso de casillas de verificación y manejo de su activación
Para utilizar casillas de verificación en MSHTML, puede agregarlas a su código HTML y usar la interfaz
IHTMLInputElement
para acceder a sus propiedades y eventos. Por ejemplo, puede utilizar la propiedadchecked
para determinar si la casilla de verificación está activada o no, y el eventoonclick
para manejar su activación.Deshabilitación de la selección de texto
Para deshabilitar la selección de texto en MSHTML, puede utilizar CSS para establecer la propiedad
user-select
ennone
. Puede aplicar este estilo a todo el documento o a elementos específicos.Renderizado de HTML en la ventana
Para renderizar HTML en su ventana con MSHTML, puede utilizar la interfaz
IOleInPlaceFrame
para proporcionar una ventana para que MSHTML la renderice. También puede utilizar la interfazIDispatch
para comunicarse entre su aplicación y MSHTML.Además, para admitir la escalabilidad HiDPI, puede utilizar la función
SetProcessDPIAware
para habilitar la conciencia DPI en su aplicación. Luego, puede utilizar la funciónSendMessage
para enviar el mensajeWM_DPICHANGED
a su ventana y ajustar su tamaño y posición en consecuencia.Conclusión
El uso de MSHTML para renderizar HTML en una aplicación WinAPI puede ser una solución potente y flexible. Con el conocimiento y la implementación adecuados, puede manejar clics de enlace, utilizar casillas de verificación, deshabilitar la selección de texto y renderizar HTML en su ventana con soporte para la escalabilidad HiDPI.