annotate win/edge.cpp @ 2042:0d8b898b03e2

Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView. This fixes issues with the IWebView2WebView members being out of scope when I save and reload the pointer.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 24 Nov 2019 21:01:46 +0000
parents 638be5b17715
children 82e5c998df2e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /* edge.cpp
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 *
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 * Allows dw_html_new() to embed a Microsoft Edge (Chromium) browser.
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4 *
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 * Requires Windows 10, 8 or 7 with Microsoft Edge (Chromium) installed.
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 *
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 * Only included when BUILD_EDGE is defined, will fall back to embedded IE.
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 *
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 * Currently only buildable with Visual Studio since it requires the EDGE
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 * SDK which is currently distributed as a nuget package.
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 */
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12 #include "dw.h"
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #include "webview2.h"
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
14 #include <wrl.h>
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
15
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
16 using namespace Microsoft::WRL;
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17
2034
89d62197124b Visual C in C++ mode complains about missing const declarations in paramaters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2033
diff changeset
18 #define _DW_HTML_DATA_NAME "_dw_edge"
89d62197124b Visual C in C++ mode complains about missing const declarations in paramaters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2033
diff changeset
19 #define _DW_HTML_DATA_LOCATION "_dw_edge_location"
89d62197124b Visual C in C++ mode complains about missing const declarations in paramaters.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2033
diff changeset
20 #define _DW_HTML_DATA_RAW "_dw_edge_raw"
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
22 extern "C" {
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
23
2018
663d79f28e46 Win: Fix dw_html_javascript_run() when using embedded IE browser widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2015
diff changeset
24 /* Import the character conversion functions from dw.c */
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
25 LPWSTR _myUTF8toWide(const char* utf8string, void* outbuf);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
26 char* _myWideToUTF8(LPCWSTR widestring, void* outbuf);
2018
663d79f28e46 Win: Fix dw_html_javascript_run() when using embedded IE browser widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2015
diff changeset
27 #define UTF8toWide(a) _myUTF8toWide(a, a ? _alloca(MultiByteToWideChar(CP_UTF8, 0, a, -1, NULL, 0) * sizeof(WCHAR)) : NULL)
663d79f28e46 Win: Fix dw_html_javascript_run() when using embedded IE browser widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2015
diff changeset
28 #define WideToUTF8(a) _myWideToUTF8(a, a ? _alloca(WideCharToMultiByte(CP_UTF8, 0, a, -1, NULL, 0, NULL, NULL)) : NULL)
663d79f28e46 Win: Fix dw_html_javascript_run() when using embedded IE browser widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2015
diff changeset
29 LRESULT CALLBACK _wndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2);
2022
28809bf17957 Win: Switch to using _wcsicmp() from CompareStringOrdinal() for increased compatibility.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2018
diff changeset
30 BOOL CALLBACK _free_window_memory(HWND handle, LPARAM lParam);
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
31 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
32
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
33 class EdgeBrowser
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
34 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
35 public:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
36 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
37 BOOL Detect(VOID);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
38 protected:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
39 Microsoft::WRL::ComPtr<IWebView2Environment> Env;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
40 };
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
41
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
42 class EdgeWebView
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
43 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
44 public:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
45 VOID Action(int action);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
46 int Raw(const char* string);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
47 int URL(const char* url);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
48 int JavascriptRun(const char* script, void* scriptdata);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
49 VOID DoSize(VOID);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
50 VOID Setup(HWND hwnd, IWebView2WebView* webview);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
51 VOID Close(VOID);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
52 protected:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
53 HWND hWnd = nullptr;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
54 Microsoft::WRL::ComPtr<IWebView2WebView> WebView;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
55 };
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
56
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
57 LRESULT CALLBACK EdgeBrowser::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
58 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
59 switch (uMsg)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
60 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
61 case WM_SIZE:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
62 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
63 // Resize the browser object to fit the window
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
64 EdgeWebView *webview;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
65
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
66 // Retrieve the browser object's pointer we stored in our window's GWL_USERDATA when
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
67 // we initially attached the browser object to this window.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
68 webview = (EdgeWebView*)dw_window_get_data(hWnd, _DW_HTML_DATA_NAME);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
69 // Resize WebView to fit the bounds of the parent window
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
70 if (webview)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
71 webview->DoSize();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
72 return(0);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
73 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
74
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
75 case WM_PAINT:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
76 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
77 PAINTSTRUCT ps;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
78 HDC hdc = BeginPaint(hWnd, &ps);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
79 EndPaint(hWnd, &ps);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
80 return(0);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
81 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
82
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
83 case WM_CREATE:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
84 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
85 // Step 3 - Create a single WebView within the parent window
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
86 // Create a WebView, whose parent is the main window hWnd
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
87 Env->CreateWebView(hWnd, Callback<IWebView2CreateWebViewCompletedHandler>(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
88 [hWnd](HRESULT result, IWebView2WebView* webview) -> HRESULT {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
89 EdgeWebView* WebView = new EdgeWebView;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
90
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
91 WebView->Setup(hWnd, webview);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
92 dw_window_set_data(hWnd, _DW_HTML_DATA_NAME, DW_POINTER(WebView));
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
93
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
94 // Add a few settings for the webview
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
95 // this is a redundant demo step as they are the default settings values
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
96 IWebView2Settings* Settings;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
97 webview->get_Settings(&Settings);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
98 Settings->put_IsScriptEnabled(TRUE);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
99 Settings->put_AreDefaultScriptDialogsEnabled(TRUE);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
100 Settings->put_IsWebMessageEnabled(TRUE);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
101
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
102 // Resize WebView to fit the bounds of the parent window
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
103 WebView->DoSize();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
104
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
105 // Save the token, we might need to dw_window_set_data() this value
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
106 // for later use to remove the handlers
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
107 EventRegistrationToken token;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
108
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
109 // Register a handler for the NavigationStarting event.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
110 webview->add_NavigationStarting(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
111 Callback<IWebView2NavigationStartingEventHandler>(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
112 [hWnd](IWebView2WebView* sender,
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
113 IWebView2NavigationStartingEventArgs* args) -> HRESULT
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
114 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
115 LPWSTR uri;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
116 sender->get_Source(&uri);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
117
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
118 _wndproc(hWnd, WM_USER + 101, (WPARAM)DW_INT_TO_POINTER(DW_HTML_CHANGE_STARTED),
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
119 !wcscmp(uri, L"about:blank") ? (LPARAM)"" : (LPARAM)WideToUTF8((LPWSTR)uri));
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
120
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
121 return S_OK;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
122 }).Get(), &token);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
123
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
124 // Register a handler for the DocumentStateChanged event.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
125 webview->add_DocumentStateChanged(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
126 Callback<IWebView2DocumentStateChangedEventHandler>(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
127 [hWnd](IWebView2WebView* sender,
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
128 IWebView2DocumentStateChangedEventArgs* args) -> HRESULT
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
129 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
130 LPWSTR uri;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
131 sender->get_Source(&uri);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
132
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
133 _wndproc(hWnd, WM_USER + 101, (WPARAM)DW_INT_TO_POINTER(DW_HTML_CHANGE_LOADING),
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
134 !wcscmp(uri, L"about:blank") ? (LPARAM)"" : (LPARAM)WideToUTF8((LPWSTR)uri));
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
135
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
136 return S_OK;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
137 }).Get(), &token);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
138
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
139 // Register a handler for the NavigationCompleted event.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
140 webview->add_NavigationCompleted(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
141 Callback<IWebView2NavigationCompletedEventHandler>(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
142 [hWnd](IWebView2WebView* sender,
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
143 IWebView2NavigationCompletedEventArgs* args) -> HRESULT
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
144 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
145 LPWSTR uri;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
146 sender->get_Source(&uri);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
147
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
148 _wndproc(hWnd, WM_USER + 101, (WPARAM)DW_INT_TO_POINTER(DW_HTML_CHANGE_COMPLETE),
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
149 !wcscmp(uri, L"about:blank") ? (LPARAM)"" : (LPARAM)WideToUTF8((LPWSTR)uri));
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
150
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
151 return S_OK;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
152 }).Get(), &token);
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
153
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
154 // Handle cached load requests due to delayed
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
155 // loading of the edge webview contexts
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
156 char *url = (char *)dw_window_get_data(hWnd, _DW_HTML_DATA_LOCATION);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
157 if (url)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
158 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
159 WebView->URL(url);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
160 free((void*)url);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
161 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
162 char *raw = (char *)dw_window_get_data(hWnd, _DW_HTML_DATA_RAW);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
163 if (raw)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
164 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
165 WebView->Raw(raw);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
166 free((void*)raw);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
167 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
168 return S_OK;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
169 }).Get());
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
170 // Success
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
171 return(0);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
172 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
173
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
174 case WM_DESTROY:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
175 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
176 // Detach the browser object from this window, and free resources.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
177 EdgeWebView *webview;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
178
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
179 // Retrieve the browser object's pointer we stored in our window's GWL_USERDATA when
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
180 // we initially attached the browser object to this window.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
181 webview = (EdgeWebView*)dw_window_get_data(hWnd, _DW_HTML_DATA_NAME);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
182 if (webview)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
183 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
184 dw_window_set_data(hWnd, _DW_HTML_DATA_NAME, NULL);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
185 webview->Close();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
186 delete webview;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
187 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
188 _free_window_memory(hWnd, 0);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
189 return(TRUE);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
190 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
191 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
192
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
193 return(DefWindowProc(hWnd, uMsg, wParam, lParam));
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
194 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
195
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
196 VOID EdgeWebView::DoSize(VOID)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
197 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
198 RECT bounds;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
199
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
200 GetClientRect(hWnd, &bounds);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
201 WebView->put_Bounds(bounds);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
202 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
203
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
204 BOOL EdgeBrowser::Detect(VOID)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
205 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
206 CreateWebView2EnvironmentWithDetails(nullptr, nullptr, nullptr,
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
207 Callback<IWebView2CreateWebView2EnvironmentCompletedHandler>(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
208 [this](HRESULT result, IWebView2Environment* env) -> HRESULT {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
209 // Successfully created Edge environment, return TRUE
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
210 Env = env;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
211 return S_OK;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
212 }).Get());
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
213 return Env ? TRUE : FALSE;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
214 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
215
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
216 void EdgeWebView::Action(int action)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
217 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
218 // We want to get the base address (ie, a pointer) to the IWebView2WebView object embedded within the browser
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
219 // object, so we can call some of the functions in the former's table.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
220 if (WebView)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
221 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
222 // Call the desired function
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
223 switch (action)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
224 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
225 case DW_HTML_GOBACK:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
226 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
227 // Call the IWebView2WebView object's GoBack function.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
228 WebView->GoBack();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
229 break;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
230 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
231
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
232 case DW_HTML_GOFORWARD:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
233 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
234 // Call the IWebView2WebView object's GoForward function.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
235 WebView->GoForward();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
236 break;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
237 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
238
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
239 case DW_HTML_GOHOME:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
240 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
241 // Call the IWebView2WebView object's GoHome function.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
242 dw_html_url(hWnd, (char*)DW_HOME_URL);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
243 break;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
244 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
245
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
246 case DW_HTML_SEARCH:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
247 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
248 // Call the IWebView2WebView object's GoSearch function.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
249 //WebView->GoSearch();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
250 break;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
251 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
252
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
253 case DW_HTML_RELOAD:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
254 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
255 // Call the IWebView2WebView object's Refresh function.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
256 WebView->Reload();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
257 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
258
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
259 case DW_HTML_STOP:
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
260 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
261 // Call the IWebView2WebView object's Stop function.
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
262 //WebView->Stop();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
263 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
264 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
265 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
266 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
267
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
268 int EdgeWebView::Raw(const char* string)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
269 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
270 if (WebView)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
271 WebView->NavigateToString(UTF8toWide(string));
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
272 return DW_ERROR_NONE;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
273 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
274
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
275 int EdgeWebView::URL(const char* url)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
276 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
277 if (WebView)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
278 WebView->Navigate(UTF8toWide(url));
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
279 return DW_ERROR_NONE;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
280 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
281
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
282 int EdgeWebView::JavascriptRun(const char* script, void* scriptdata)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
283 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
284 HWND thishwnd = hWnd;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
285
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
286 if (WebView)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
287 WebView->ExecuteScript(UTF8toWide(script),
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
288 Callback<IWebView2ExecuteScriptCompletedHandler>(
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
289 [thishwnd, scriptdata](HRESULT error, PCWSTR result) -> HRESULT
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
290 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
291 _wndproc(thishwnd, WM_USER + 100, (error == S_OK ? (WPARAM)WideToUTF8((LPWSTR)result) : NULL), (LPARAM)scriptdata);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
292 return S_OK;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
293 }).Get());
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
294 return DW_ERROR_NONE;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
295 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
296
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
297 VOID EdgeWebView::Setup(HWND hwnd, IWebView2WebView* webview)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
298 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
299 hWnd = hwnd;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
300 WebView = webview;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
301 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
302
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
303 VOID EdgeWebView::Close(VOID)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
304 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
305 if (WebView)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
306 WebView->Close();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
307 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
308
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
309 EdgeBrowser *DW_EDGE = NULL;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
310
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
311 extern "C" {
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
312 /******************************* dw_edge_detect() **************************
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
313 * Attempts to create a temporary Edge (Chromium) browser context...
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
314 * If we succeed return TRUE and use Edge for HTML windows.
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
315 * If it fails return FALSE and fall back to using embedded IE.
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
316 */
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
317 BOOL _dw_edge_detect(VOID)
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
318 {
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
319 DW_EDGE = new EdgeBrowser;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
320 if (DW_EDGE)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
321 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
322 BOOL result = DW_EDGE->Detect();
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
323 if (!result)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
324 {
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
325 delete DW_EDGE;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
326 DW_EDGE = NULL;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
327 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
328 return result;
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
329 }
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
330 return FALSE;
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
331 }
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
332
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
333 /******************************* dw_edge_action() **************************
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
334 * Implements the functionality of a "Back". "Forward", "Home", "Search",
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
335 * "Refresh", or "Stop" button.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
336 *
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
337 * hwnd = Handle to the window hosting the browser object.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
338 * action = One of the following:
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
339 * 0 = Move back to the previously viewed web page.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
340 * 1 = Move forward to the previously viewed web page.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
341 * 2 = Move to the home page.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
342 * 3 = Search.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
343 * 4 = Refresh the page.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
344 * 5 = Stop the currently loading page.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
345 */
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
346
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
347 void _dw_edge_action(HWND hwnd, int action)
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
348 {
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
349 EdgeWebView* webview = (EdgeWebView *)dw_window_get_data(hwnd, _DW_HTML_DATA_NAME);
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
350 if (webview)
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
351 webview->Action(action);
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
352 }
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
353
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
354 /******************************* dw_edge_raw() ****************************
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
355 * Takes a string containing some HTML BODY, and displays it in the specified
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
356 * window. For example, perhaps you want to display the HTML text of...
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
357 *
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
358 * <P>This is a picture.<P><IMG src="mypic.jpg">
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
359 *
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
360 * hwnd = Handle to the window hosting the browser object.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
361 * string = Pointer to nul-terminated string containing the HTML BODY.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
362 * (NOTE: No <BODY></BODY> tags are required in the string).
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
363 *
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
364 * RETURNS: 0 if success, or non-zero if an error.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
365 */
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
366
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
367 int _dw_edge_raw(HWND hwnd, const char* string)
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
368 {
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
369 EdgeWebView* webview = (EdgeWebView*)dw_window_get_data(hwnd, _DW_HTML_DATA_NAME);
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
370 if (webview)
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
371 return webview->Raw(string);
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
372 else
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
373 dw_window_set_data(hwnd, _DW_HTML_DATA_RAW, strdup(string));
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
374 return DW_ERROR_NONE;
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
375 }
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
376
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
377 /******************************* dw_edge_url() ****************************
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
378 * Displays a URL, or HTML file on disk.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
379 *
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
380 * hwnd = Handle to the window hosting the browser object.
2015
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
381 * url = Pointer to nul-terminated name of the URL/file.
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
382 *
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
383 * RETURNS: 0 if success, or non-zero if an error.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
384 */
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
385
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
386 int _dw_edge_url(HWND hwnd, const char* url)
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
387 {
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
388 EdgeWebView* webview = (EdgeWebView*)dw_window_get_data(hwnd, _DW_HTML_DATA_NAME);
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
389 if (webview)
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
390 return webview->URL(url);
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
391 else
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
392 dw_window_set_data(hwnd, _DW_HTML_DATA_LOCATION, strdup(url));
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
393 return DW_ERROR_NONE;
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
394 }
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
395
2015
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
396 /******************************* dw_edge_javascript_run() ****************************
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
397 * Runs a javascript in the specified browser context.
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
398 *
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
399 * hwnd = Handle to the window hosting the browser object.
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
400 * script = Pointer to nul-terminated javascript string.
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
401 * scriptdata = Pointer to user data to be passed to the callback.
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
402 *
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
403 * RETURNS: 0 if success, or non-zero if an error.
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
404 */
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
405
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
406 int _dw_edge_javascript_run(HWND hwnd, const char* script, void* scriptdata)
2015
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
407 {
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
408 EdgeWebView* webview = (EdgeWebView*)dw_window_get_data(hwnd, _DW_HTML_DATA_NAME);
2015
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
409 if (webview)
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
410 return webview->JavascriptRun(script, scriptdata);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
411 return DW_ERROR_UNKNOWN;
2015
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
412 }
c30f4354966e Win: Added support for dw_html_javascript_run() using Edge (Chromium).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2001
diff changeset
413
2001
f7acca46f795 Win: Fixes for Edge (Chromium) embedding, the loading can be delayed so...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2000
diff changeset
414 /************************** edgeWindowProc() *************************
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
415 * Our message handler for our window to host the browser.
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
416 */
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
417
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
418 LRESULT CALLBACK _edgeWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
1999
4e808c4cadfb Win: Add initial support for Microsoft Edge (Chromium) embedding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
419 {
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
420 if (DW_EDGE)
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
421 return DW_EDGE->WndProc(hWnd, uMsg, wParam, lParam);
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
422 return DefWindowProc(hWnd, uMsg, wParam, lParam);
2000
77e43d71eaa7 Changes to allow mixing C and C++ when including dw.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1999
diff changeset
423 }
2042
0d8b898b03e2 Win: Rewrite edge.cpp using C++ classes, EdgeBrowser and EdgeWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2041
diff changeset
424 }