Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
WebViewPanel.h
Aller à la documentation de ce fichier.
1#pragma once
2
3#include <windows.h>
4#include <string>
5#include <wrl.h>
6#include <WebView2.h>
7#include <functional>
8
10
29{
30public:
31
32 // -------------------------------------------------------------------------
33 // Construction / destruction
34 // -------------------------------------------------------------------------
43 explicit WebViewPanel(Logger& logger);
44
55
67 WebViewPanel(const WebViewPanel&) = delete;
68
81
82 // -------------------------------------------------------------------------
83 // API publique
84 // -------------------------------------------------------------------------
85
90 void create(HWND parentHwnd);
91
95 void resize();
96
100 void navigate(const std::wstring& url);
101
105 void navigateToString(const std::wstring& htmlContent);
106
110 bool isInitialized() const;
111
123 void executeScript(const std::wstring& script);
124
129 void setOnInitialized(std::function<void()> callback);
130
137 void close(); // Ferme proprement le WebView et libère les ressources
138
143 void setVirtualHostMapping(const std::wstring& hostname, const std::wstring& folderPath);
144
157 void setOnMessageReceived(std::function<void(const std::string&)> callback);
158
159private:
160 // -------------------------------------------------------------------------
161 // Méthodes privées
162 // -------------------------------------------------------------------------
163
171 void initializeWebView();
172
181 void onEnvironmentCreated(HRESULT result, ICoreWebView2Environment* env);
182
192 void onControllerCreated(HRESULT result, ICoreWebView2Controller* controller);
193
207 HRESULT onWebMessageReceived(ICoreWebView2* sender,
208 ICoreWebView2WebMessageReceivedEventArgs* args);
209
210 // -------------------------------------------------------------------------
211 // Membres privés
212 // -------------------------------------------------------------------------
213 /*fichier log*/
215
216 /*Handle de l'instance Win32 de l'application parente*/
217 HWND m_parentHwnd = nullptr;
218
219 /*Pointeurs intelligents COM pour le controller et le webview*/
220 Microsoft::WRL::ComPtr<ICoreWebView2Controller> m_controller;
221
222 /*Pointeur intelligent COM pour l'instance WebView2 elle-même*/
223 Microsoft::WRL::ComPtr<ICoreWebView2> m_webview;
224
225 /*Indique si le WebView est prêt à être utilisé (controller + webview créés) */
226 bool m_isInitialized = false;
227
228 /*Callback optionnel à appeler une fois l'initialisation terminée (ex. pour lancer la navigation) */
229 std::function<void()> m_onInitialized;
230
232 std::function<void(const std::string&)> m_onMessageReceived;
233};
Système de journalisation à 5 niveaux de trace, un fichier par moteur.
Journaliseur associé à un moteur nommé.
Definition Logger.h:99
Wrapper Win32 autour de WebView2 pour affichage HTML embarqué.
Definition WebViewPanel.h:29
HWND m_parentHwnd
Definition WebViewPanel.h:217
Microsoft::WRL::ComPtr< ICoreWebView2Controller > m_controller
Definition WebViewPanel.h:220
void setOnInitialized(std::function< void()> callback)
Définit un callback à appeler une fois l'initialisation terminée.
Definition WebViewPanel.cpp:104
void close()
Ferme le WebView et libère les ressources associées.
Definition WebViewPanel.cpp:109
void navigate(const std::wstring &url)
Navigue vers une URL.
Definition WebViewPanel.cpp:51
void onControllerCreated(HRESULT result, ICoreWebView2Controller *controller)
Callback déclenché à la fin de la création du contrôleur WebView2.
Definition WebViewPanel.cpp:196
~WebViewPanel()
Destructeur — ferme proprement le WebView et libère les ressources associées.
Definition WebViewPanel.cpp:14
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://h...
Definition WebViewPanel.cpp:128
void create(HWND parentHwnd)
Initialise WebView2 dans une fenêtre Win32 existante.
Definition WebViewPanel.cpp:24
void onEnvironmentCreated(HRESULT result, ICoreWebView2Environment *env)
Callback déclenché à la fin de la création de l'environnement WebView2.
Definition WebViewPanel.cpp:177
WebViewPanel(const WebViewPanel &)=delete
Interdit la copie — chaque instance gère ses propres ressources COM.
void executeScript(const std::wstring &script)
Exécute un script JavaScript dans le contexte de la page chargée.
Definition WebViewPanel.cpp:73
void setOnMessageReceived(std::function< void(const std::string &)> callback)
Enregistre le handler des messages JS entrants.
Definition WebViewPanel.cpp:150
void resize()
Redimensionne le WebView pour s'adapter à la fenêtre.
Definition WebViewPanel.cpp:38
void initializeWebView()
Initialise l'environnement WebView2 de manière asynchrone.
Definition WebViewPanel.cpp:159
Logger & m_logger
Definition WebViewPanel.h:214
std::function< void(const std::string &)> m_onMessageReceived
Definition WebViewPanel.h:232
bool isInitialized() const
Vérifie si le WebView est prêt.
Definition WebViewPanel.cpp:99
HRESULT onWebMessageReceived(ICoreWebView2 *sender, ICoreWebView2WebMessageReceivedEventArgs *args)
Callback statique déclenché à la réception d'un message JavaScript.
Definition WebViewPanel.cpp:228
std::function< void()> m_onInitialized
Definition WebViewPanel.h:229
void navigateToString(const std::wstring &htmlContent)
Injecte du HTML directement.
Definition WebViewPanel.cpp:62
WebViewPanel & operator=(const WebViewPanel &)=delete
Interdit l'affectation — chaque instance gère ses propres ressources COM.
Microsoft::WRL::ComPtr< ICoreWebView2 > m_webview
Definition WebViewPanel.h:223
bool m_isInitialized
Definition WebViewPanel.h:226