Mercurial > dwindows
diff win/dw.c @ 1999:4e808c4cadfb
Win: Add initial support for Microsoft Edge (Chromium) embedding.
Only works with Visual Studio currently due to the SDK being a nuget package.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 31 Oct 2019 07:01:35 +0000 |
parents | 0e354f2edb16 |
children | 77e43d71eaa7 |
line wrap: on
line diff
--- a/win/dw.c Fri Oct 25 22:37:52 2019 +0000 +++ b/win/dw.c Thu Oct 31 07:01:35 2019 +0000 @@ -310,6 +310,10 @@ #if (defined(BUILD_DLL) || defined(BUILD_HTML)) LRESULT CALLBACK _browserWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +#ifdef BUILD_EDGE +BOOL _DW_EDGE_DETECTED = FALSE; +LRESULT CALLBACK _edgeWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +#endif #endif LRESULT CALLBACK _colorwndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2); void _resize_notebook_page(HWND handle, int pageid); @@ -4283,9 +4287,19 @@ #if (defined(BUILD_DLL) || defined(BUILD_HTML)) /* Register HTML renderer class */ memset(&wc, 0, sizeof(WNDCLASS)); - wc.lpfnWndProc = (WNDPROC)_browserWindowProc; wc.lpszClassName = BrowserClassName; - wc.style = CS_HREDRAW|CS_VREDRAW; + wc.style = CS_HREDRAW | CS_VREDRAW; +#ifdef BUILD_EDGE + /* Check if Microsoft Edge (Chromium) is installed */ + if(_DW_EDGE_DETECTED = _dw_edge_detect()) + { + wc.lpfnWndProc = (WNDPROC)_edgeWindowProc; + } + else +#endif + { + wc.lpfnWndProc = (WNDPROC)_browserWindowProc; + } RegisterClass(&wc); #endif @@ -5683,6 +5697,12 @@ void _dw_html_action(HWND hwnd, int action); int _dw_html_raw(HWND hwnd, char *string); int _dw_html_url(HWND hwnd, char *url); +#ifdef BUILD_EDGE +void _dw_edge_action(HWND hwnd, int action); +int _dw_edge_raw(HWND hwnd, LPCWSTR string); +int _dw_edge_url(HWND hwnd, LPCWSTR url); +BOOL _dw_edge_detect(VOID); +#endif #endif /* @@ -5694,6 +5714,11 @@ void API dw_html_action(HWND handle, int action) { #if (defined(BUILD_DLL) || defined(BUILD_HTML)) +#ifdef BUILD_EDGE + if (_DW_EDGE_DETECTED) + _dw_edge_action(handle, action); + else +#endif _dw_html_action(handle, action); #endif } @@ -5710,6 +5735,10 @@ int API dw_html_raw(HWND handle, char *string) { #if (defined(BUILD_DLL) || defined(BUILD_HTML)) +#ifdef BUILD_EDGE + if (_DW_EDGE_DETECTED) + return _dw_edge_raw(handle, UTF8toWide(string)); +#endif return _dw_html_raw(handle, string); #else return DW_ERROR_GENERAL; @@ -5728,6 +5757,10 @@ int API dw_html_url(HWND handle, char *url) { #if (defined(BUILD_DLL) || defined(BUILD_HTML)) +#if BUILD_EDGE + if (_DW_EDGE_DETECTED) + return _dw_edge_url(handle, UTF8toWide(url)); +#endif return _dw_html_url(handle, url); #else return DW_ERROR_GENERAL;