SDK Multiplataforma en C logo
EspañolEnglish
SDK Multiplataforma en C

WebView

❮ Anterior
Siguiente ❯

#Cabecera

#include <gui/webview.h>


#Funciones

WebView*webview_create (void)
voidwebview_OnFocus (...)
voidwebview_size (...)
voidwebview_navigate (...)
voidwebview_back (...)
voidwebview_forward (...)

Un control WebView nos permitirá incrustar contenido Web en nuestra aplicación. Se comportará de igual forma que otros controles de vista como View o TextView en lo relativo a maquetación o redimensionado, mostrando un navegador totalmente funcional en su área cliente (Figura 1). En ¡Hola WebView! tienes una aplicación de ejemplo.


#1. Dependencias de WebView

WebView depende de tecnologías nativas en cada sistema operativo: Edge:WebView2 en Windows, WebKit2 en GTK/Linux y WKWebView en macOS (Figura 2). El build system de NAppGUI, se encargará de gestionar las dependencias por nosotros de forma automática. No obstante, debes tener en cuenta estos puntos, antes de utilizar este control en tus aplicaciones de forma exitosa.

Figura 2: Dependencias nativas de WebView.

#1.1. WebView en Windows

  • En la carpeta prj/depend/web/win están las cabeceras y librerías estáticas de WebView2.
  • Se han obtenido desde este paquete de NuGet.
  • Existen problemas al compilar en modo Debug desde VS2017 y VS2015. Sin embargo, en modo Release, las aplicaciones funcionan sin problema utilizando estas versiones de Visual Studio. Más información aquí.
  • Visual Studio 2013 y anteriores no soportan la compilación del WebView2.
  • MinGW no soporta la compilación del WebView2.
  • Se recomienda el uso de VS2019 o VS2022 para generar aplicaciones con WebView2.
  • WebView2 solo funciona en Windows 10 y Windows 11.

#1.2. WebView en macOS

No debes hacer nada especial para compilar el WebView en macOS. CMake enlazará automáticamente com WebKit.framework. Por el momento, este soporte está disponible para macOS 10.10 Yosemite y posteriores, ya que WKWebView no está presente en distribuciones anteriores.

#1.3. WebView en Linux

NAppGUI carga WebKit2 en tiempo de ejecución mediante dlib_open, al crear el primer WebView. No es necesario instalar las librerías de desarrollo de WebKit2 para compilar, ni las aplicaciones dependerán de WebKit2 para arrancar. Para que el control muestre contenido Web, la máquina donde se ejecute la aplicación deberá tener instalado WebKit2.

Instalación de WebKit2 en Ubuntu.
sudo apt-get install libwebkit2gtk-4.1-0   // Ubuntu 22 and later
sudo apt-get install libwebkit2gtk-4.0-37  // Ubuntu 16, 18, 20
sudo apt-get install libwebkit2gtk-3.0-25  // Ubuntu 14
El soporte WebKit2 no está disponible en Ubuntu 12 y anteriores.

#2. WebView sin soporte Web

Si no hay soporte Web, las aplicaciones que hagan uso del control WebView compilarán y se podrán ejecutar. La diferencia es que no mostrarán contenido Web en el control, tan solo un área vacía (Figura 3). Esto ocurre cuando WebKit2 no está instalado en Linux, al compilar con MinGW o Visual Studio 2013 y anteriores, o en macOS anteriores a 10.10 Yosemite. CMake lo indicará en la línea WEB_SUPPORT de la configuración.

Captura de la aplicación WebHello con soporte WebView deshabilitado.
Figura 3: Aplicación con el soporte Web deshabilitado.
La ausencia de soporte Web no generará errores de compilación ni enlace en aplicaciones que utilicen el WebView.
❮ Anterior
Siguiente ❯

#webview_create ()

Crea una vista Web.

WebView*
webview_create(void);

Retorna

La vista Web.


#webview_OnFocus ()

Establece un manejador para el foco del teclado.

void
webview_OnFocus(WebView *view,
                Listener *listener);
view

La vista.

listener

Función callback que se llamará cuando se reciba o se pierda el foco del teclado.

Observaciones

Ver Eventos GUI.


#webview_size ()

Establece el tamaño por defecto de la vista.

void
webview_size(WebView *view,
             const S2Df size);
view

La vista.

size

El tamaño.

Observaciones

Corresponde al Dimensionado natural del control. Por defecto 245x144.


#webview_navigate ()

Carga una URL en la vista Web.

void
webview_navigate(WebView *view,
                 const char_t *url);
view

La vista.

url

URL a cargar, cadena C UTF8 terminada en carácter nulo '\0'.


#webview_back ()

Retrocede a la pagina anterior de la pila del navegador.

void
webview_back(WebView *view);
view

La vista.


#webview_forward ()

Avanza a la pagina siguiente de la pila del navegador.

void
webview_forward(WebView *view);
view

La vista.

❮ Anterior
Siguiente ❯