Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo utilizar chtmlview en el programa de diálogo vc

Cómo utilizar chtmlview en el programa de diálogo vc

MFC de Microsoft proporciona una nueva clase CHtmlView en Visual Studio 6.0. Usando esta clase, podemos implementar un programa que muestra archivos HTML basados ​​en la estructura de vista del documento. Pero, ¿se puede utilizar para implementar esta funcionalidad en un cuadro de diálogo? También podríamos comparar CHtmlView y CListView. Al comparar estas dos clases, encontraremos algunas diferencias interesantes. CListView en MFC tiene una clase CListCtrl correspondiente para usar en cuadros de diálogo, pero CHtmlView no tiene una clase correspondiente. Por lo tanto, para mostrar un archivo HTML en un control de cuadro de diálogo, debemos crear una subclase de CHtmlCtrl para CHtmlView. Para demostrar el uso de esta clase, este ejemplo muestra un archivo HTML denominado "about.htm" en el cuadro de diálogo "Acerca de". Lo que es aún más interesante es que los archivos fuente HTML utilizados por el programa se almacenan como recursos en el archivo EXE. La compilación y ejecución del programa se muestra en la Figura 1:

Figura 1, cuadro de diálogo que muestra el archivo HTML

Implementación

Para mostrarlo. el archivo HTML del cuadro de diálogo, debemos asociar la clase CHtmlCtrl con un control estático (u otro control) en el cuadro de diálogo para proporcionar una ventana para mostrar el archivo HTML.

Para proporcionar una ventana, definimos la función CreateFromStatic () en la clase CHtmlCtrl. El código específico es el siguiente:

BOOL CHtmlCtrl::CreateFromStatic(UINT nID, CWnd* pParent)

.

{

p>

CStatic wndStatic; // Objeto de control estático

if (!wndStatic.SubclassDlgItem(nID, pParent))

return FALSE;

// Obtenga el área rectangular del control estático y conviértala a las coordenadas del área del cliente de la ventana principal

CRect rc

wndStatic.SubclassDlgItem(nID, pParent))

return FALSE;

// Obtenga el área rectangular del control estático y conviértala a las coordenadas del área del cliente de la ventana principal

CRect rc;

wndStatic.GetWindowRect(amp; rc);

pParent-gt; .DestroyWindow();

// Crear control HTML (CHtmlView)

return (Create(NULL, // nombre de clase;

NULL , // título;

(WS_CHILD | WS_VISIBLE ), // estilo;

rc, // área rectangular

pParent, // ventana principal;

nID, // número de identificación del control ;

NULL)); // Eliminar soporte de marco de documento

}

Para evitar que el programa principal trate el objeto CHtmlView como un documento/marco de vista, es necesario anular CView:.OnMouseActivate(). Funciones OnMouseActivate() y CView::OnDestroy(). Además, OnMouseActivate se encarga de responder cuando el usuario hace clic en el control (WM_MOUSEACTIVATE).

int CHtmlCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT msg)

{

// Omitir la documentación de CView /Frame

return CWnd: .OnMouseActivate(pDesktopWnd, nHitTest, msg

}

void CHtmlCtrl::OnDestroy()

{

if (m_pBrowserApp)

{

m_pBrowserApp-gt; Release()

m_pBrowserApp = NULL; >

}