Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
Référence de la classe WebViewPanel

Wrapper Win32 autour de WebView2 pour affichage HTML embarqué. Plus de détails...

#include <WebViewPanel.h>

Graphe de collaboration de WebViewPanel:

Fonctions membres publiques

 WebViewPanel (Logger &logger)
 Construit un WebViewPanel avec un logger pour les messages d'erreur et d'information.
 
 ~WebViewPanel ()
 Destructeur — ferme proprement le WebView et libère les ressources associées.
 
 WebViewPanel (const WebViewPanel &)=delete
 Interdit la copie — chaque instance gère ses propres ressources COM.
 
WebViewPaneloperator= (const WebViewPanel &)=delete
 Interdit l'affectation — chaque instance gère ses propres ressources COM.
 
void create (HWND parentHwnd)
 Initialise WebView2 dans une fenêtre Win32 existante.
 
void resize ()
 Redimensionne le WebView pour s'adapter à la fenêtre.
 
void navigate (const std::wstring &url)
 Navigue vers une URL.
 
void navigateToString (const std::wstring &htmlContent)
 Injecte du HTML directement.
 
bool isInitialized () const
 Vérifie si le WebView est prêt.
 
void executeScript (const std::wstring &script)
 Exécute un script JavaScript dans le contexte de la page chargée.
 
void setOnInitialized (std::function< void()> callback)
 Définit un callback à appeler une fois l'initialisation terminée.
 
void close ()
 Ferme le WebView et libère les ressources associées.
 
void setVirtualHostMapping (const std::wstring &hostname, const std::wstring &folderPath)
 Mappe un nom d'hôte virtuel vers un dossier local. Permet de servir des fichiers locaux via https://hostname/...
 
void setOnMessageReceived (std::function< void(const std::string &)> callback)
 Enregistre le handler des messages JS entrants.
 

Fonctions membres privées

void initializeWebView ()
 Initialise l'environnement WebView2 de manière asynchrone.
 
void onEnvironmentCreated (HRESULT result, ICoreWebView2Environment *env)
 Callback déclenché à la fin de la création de l'environnement WebView2.
 
void onControllerCreated (HRESULT result, ICoreWebView2Controller *controller)
 Callback déclenché à la fin de la création du contrôleur WebView2.
 
HRESULT onWebMessageReceived (ICoreWebView2 *sender, ICoreWebView2WebMessageReceivedEventArgs *args)
 Callback statique déclenché à la réception d'un message JavaScript.
 

Attributs privés

Loggerm_logger
 
HWND m_parentHwnd = nullptr
 
Microsoft::WRL::ComPtr< ICoreWebView2Controller > m_controller
 
Microsoft::WRL::ComPtr< ICoreWebView2 > m_webview
 
bool m_isInitialized = false
 
std::function< void()> m_onInitialized
 
std::function< void(const std::string &)> m_onMessageReceived
 

Description détaillée

Wrapper Win32 autour de WebView2 pour affichage HTML embarqué.

Responsabilités :

  • Initialisation du runtime WebView2
  • Gestion du cycle de vie (controller + webview)
  • Resize automatique dans une fenêtre Win32
  • Navigation (URL / HTML string)

Usage typique :

WebViewPanel panel(logger);
panel.create(hwndParent);
panel.navigate("https://google.com");
Wrapper Win32 autour de WebView2 pour affichage HTML embarqué.
Definition WebViewPanel.h:29

Documentation des constructeurs et destructeur

◆ WebViewPanel() [1/2]

WebViewPanel::WebViewPanel ( Logger logger)
explicit

Construit un WebViewPanel avec un logger pour les messages d'erreur et d'information.

Le logger doit être fourni par le module parent (ex. MainWindow) pour centraliser les logs.

Paramètres
loggerRéférence à un Logger déjà initialisé, utilisé pour journaliser les événements du WebViewPanel. Doit rester valide pendant toute la durée de vie du WebViewPanel.

◆ ~WebViewPanel()

WebViewPanel::~WebViewPanel ( )

Destructeur — ferme proprement le WebView et libère les ressources associées.

Appelle close() pour s'assurer que le WebView est fermé et que les ressources COM sont libérées. Après destruction, le WebViewPanel ne doit plus être utilisé.

Note : Si la fenêtre parent est détruite avant le WebViewPanel, assurez-vous d'appeler close() manuellement pour éviter les fuites de ressources.

◆ WebViewPanel() [2/2]

WebViewPanel::WebViewPanel ( const WebViewPanel )
delete

Interdit la copie — chaque instance gère ses propres ressources COM.

Chaque WebViewPanel est unique et gère ses propres ressources COM. La copie pourrait entraîner des fuites ou des conflits de ressources. Par conséquent, l'opérateur d'affectation est supprimé pour garantir que chaque instance est non copiable.

Paramètres
otherL'autre instance de WebViewPanel à copier (non utilisé).
Renvoie
Référence à l'instance actuelle (non utilisée).

Documentation des fonctions membres

◆ close()

void WebViewPanel::close ( )

Ferme le WebView et libère les ressources associées.

Doit être appelé avant la destruction de la fenêtre parent pour éviter les fuites. Après appel, le WebViewPanel ne doit plus être utilisé.

◆ create()

void WebViewPanel::create ( HWND  parentHwnd)

Initialise WebView2 dans une fenêtre Win32 existante.

Paramètres
parentHwndHandle de la fenêtre parent.

◆ executeScript()

void WebViewPanel::executeScript ( const std::wstring &  script)

Exécute un script JavaScript dans le contexte de la page chargée.

Permet d'interagir dynamiquement avec le contenu HTML, par exemple pour manipuler la carte Leaflet ou récupérer des données depuis la page.

Log erreur si le WebView n'est pas encore initialisé ou si l'exécution échoue.

Paramètres
scriptCode JavaScript à exécuter. Doit être une expression valide. Le résultat de l'exécution est ignoré (void).

◆ initializeWebView()

void WebViewPanel::initializeWebView ( )
private

Initialise l'environnement WebView2 de manière asynchrone.

Lance CreateCoreWebView2EnvironmentWithOptions avec les options par défaut (runtime Evergreen installé sur le système).Le résultat est traité dans onEnvironmentCreated via un callback WRL.

◆ isInitialized()

bool WebViewPanel::isInitialized ( ) const

Vérifie si le WebView est prêt.

◆ navigate()

void WebViewPanel::navigate ( const std::wstring &  url)

Navigue vers une URL.

◆ navigateToString()

void WebViewPanel::navigateToString ( const std::wstring &  htmlContent)

Injecte du HTML directement.

◆ onControllerCreated()

void WebViewPanel::onControllerCreated ( HRESULT  result,
ICoreWebView2Controller *  controller 
)
private

Callback déclenché à la fin de la création du contrôleur WebView2.

Initialise le contrôleur et la vue, enregistre le handler de messages, redimensionne la vue et notifie l'appelant via m_onInitialized.

Paramètres
resultCode HRESULT retourné par l'API WebView2.
controllerPointeur vers le contrôleur créé (nullptr en cas d'échec).

◆ onEnvironmentCreated()

void WebViewPanel::onEnvironmentCreated ( HRESULT  result,
ICoreWebView2Environment *  env 
)
private

Callback déclenché à la fin de la création de l'environnement WebView2.

Vérifie que l'environnement est valide puis lance la création du contrôleur.

Paramètres
resultCode HRESULT retourné par l'API WebView2.
envPointeur vers l'environnement créé (nullptr en cas d'échec).

◆ onWebMessageReceived()

HRESULT WebViewPanel::onWebMessageReceived ( ICoreWebView2 *  sender,
ICoreWebView2WebMessageReceivedEventArgs *  args 
)
private

Callback statique déclenché à la réception d'un message JavaScript.

Récupère le message UTF-16 envoyé depuis la page web, le convertit en std::string puis l'affiche dans une boîte de dialogue.

Note
La conversion wstring → string est naïve (ASCII uniquement). Utiliser WideCharToMultiByte si les messages peuvent contenir de l'Unicode.
Paramètres
senderInterface WebView2 émettrice du message.
argsArguments contenant le message brut.
Renvoie
S_OK dans tous les cas (les erreurs sont silencieuses).

◆ operator=()

WebViewPanel & WebViewPanel::operator= ( const WebViewPanel )
delete

Interdit l'affectation — chaque instance gère ses propres ressources COM.

Chaque WebViewPanel est unique et gère ses propres ressources COM. La copie pourrait entraîner des fuites ou des conflits de ressources. Par conséquent, l'opérateur d'affectation est supprimé pour garantir que chaque instance est non copiable.

Paramètres
otherL'autre instance de WebViewPanel à copier (non utilisé).
Renvoie
Référence à l'instance actuelle (non utilisée).

◆ resize()

void WebViewPanel::resize ( )

Redimensionne le WebView pour s'adapter à la fenêtre.

◆ setOnInitialized()

void WebViewPanel::setOnInitialized ( std::function< void()>  callback)

Définit un callback à appeler une fois l'initialisation terminée.

Paramètres
callbackFonction à appeler après initialisation.

◆ setOnMessageReceived()

void WebViewPanel::setOnMessageReceived ( std::function< void(const std::string &)>  callback)

Enregistre le handler des messages JS entrants.

Appelé par MainWindow::create() AVANT l'initialisation du WebView. Le callback reçoit le message brut UTF-8 envoyé depuis Leaflet via : window.chrome.webview.postMessage(JSON.stringify({...}))

Exécuté sur le thread UI — accès aux objets Win32 et au modèle sûr. Si non enregistré, les messages JS sont ignorés silencieusement.

Paramètres
callbackHandler à appeler avec le message JSON en paramètre.

◆ setVirtualHostMapping()

void WebViewPanel::setVirtualHostMapping ( const std::wstring &  hostname,
const std::wstring &  folderPath 
)

Mappe un nom d'hôte virtuel vers un dossier local. Permet de servir des fichiers locaux via https://hostname/...

Documentation des données membres

◆ m_controller

Microsoft::WRL::ComPtr<ICoreWebView2Controller> WebViewPanel::m_controller
private

◆ m_isInitialized

bool WebViewPanel::m_isInitialized = false
private

◆ m_logger

Logger& WebViewPanel::m_logger
private

◆ m_onInitialized

std::function<void()> WebViewPanel::m_onInitialized
private

◆ m_onMessageReceived

std::function<void(const std::string&)> WebViewPanel::m_onMessageReceived
private

Handler des messages JS. Nullptr si non enregistré.

◆ m_parentHwnd

HWND WebViewPanel::m_parentHwnd = nullptr
private

◆ m_webview

Microsoft::WRL::ComPtr<ICoreWebView2> WebViewPanel::m_webview
private

La documentation de cette classe a été générée à partir des fichiers suivants :