-
Notifications
You must be signed in to change notification settings - Fork 3
/
MWebBrowserEx.cpp
87 lines (75 loc) · 1.84 KB
/
MWebBrowserEx.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// MWebBrowserEx.cpp --- simple Win32 Web Browser Extended
// Copyright (C) 2019 Katayama Hirofumi MZ <[email protected]>
// This file is public domain software.
#include "MWebBrowserEx.hpp"
#include "MBindStatusCallback.hpp"
#include <commdlg.h>
#include <cwchar>
#include <comdef.h>
#include <cstring>
#include <mshtmhst.h>
/*static*/ MWebBrowserEx *
MWebBrowserEx::Create(HWND hwndParent)
{
MWebBrowserEx *pBrowser = new MWebBrowserEx(hwndParent);
if (!pBrowser->IsCreated())
{
pBrowser->Release();
pBrowser = NULL;
}
return pBrowser;
}
MWebBrowserEx::MWebBrowserEx(HWND hwndParent) : MWebBrowser(hwndParent)
{
}
MWebBrowserEx::~MWebBrowserEx()
{
}
// IUnknown interface
STDMETHODIMP MWebBrowserEx::QueryInterface(REFIID riid, void **ppvObj)
{
#ifndef NDEBUG
LPOLESTR psz = NULL;
StringFromIID(riid, &psz);
if (psz)
{
printf("MWebBrowserEx::QueryInterface: %ls\n", psz);
CoTaskMemFree(psz);
}
#endif
return MWebBrowser::QueryInterface(riid, ppvObj);
}
STDMETHODIMP_(ULONG) MWebBrowserEx::AddRef()
{
return MWebBrowser::AddRef();
}
STDMETHODIMP_(ULONG) MWebBrowserEx::Release()
{
return MWebBrowser::Release();
}
// IServiceProvider interface
STDMETHODIMP MWebBrowserEx::QueryService(
REFGUID guidService,
REFIID riid,
void **ppvObject)
{
#ifndef NDEBUG
LPOLESTR psz = NULL;
StringFromIID(riid, &psz);
if (psz)
{
printf("MWebBrowserEx::QueryService: %ls\n", psz);
CoTaskMemFree(psz);
}
#endif
if (riid == __uuidof(IDownloadManager))
{
*ppvObject = static_cast<IDownloadManager *>(this);
}
else
{
return MWebBrowser::QueryService(guidService, riid, ppvObject);
}
AddRef();
return S_OK;
}