32#define DOCHOST_DOCCANNAVIGATE 0
35#define CMDID_EXPLORER_UPDATEHISTORY 38
85 DISPPARAMS dispparams;
91 dispparams.cNamedArgs = 0;
92 dispparams.rgdispidNamedArgs =
NULL;
93 dispparams.rgvarg =
params;
116 DISPPARAMS dispparams;
120 dispparams.cArgs = 2;
121 dispparams.cNamedArgs = 0;
122 dispparams.rgdispidNamedArgs =
NULL;
123 dispparams.rgvarg =
params;
134 TRACE(
"%d >>>\n", dispid);
136 TRACE(
"%d <<<\n", dispid);
148 if(!
This->document) {
149 WARN(
"document == NULL\n");
153 hres = IUnknown_QueryInterface(
This->document, &IID_IHlinkTarget, (
void**)&hlink);
155 hres = IHlinkTarget_Navigate(hlink, 0,
NULL);
156 IHlinkTarget_Release(hlink);
158 FIXME(
"Navigate failed\n");
163 TRACE(
"No IHlink iface\n");
167 FIXME(
"Could not get IOleObject iface: %08x\n",
hres);
173 IOleObject_Release(ole_object);
193 IDispatch_Release(disp);
195 WARN(
"Invoke(DISPID_READYSTATE failed: %08x\n",
hres);
220 IConnectionPointContainer_Release(cp_container);
225 hres = IConnectionPoint_Advise(
cp, (
IUnknown*)&
This->IPropertyNotifySink_iface, &
This->prop_notif_cookie);
227 hres = IConnectionPoint_Unadvise(
cp,
This->prop_notif_cookie);
228 IConnectionPoint_Release(
cp);
236 This->doc_state = doc_state;
237 if(doc_state >
This->ready_state)
238 This->ready_state = doc_state;
243 if(ready_state > READYSTATE_LOADING &&
This->travellog.loading_pos != -1) {
244 WARN(
"histupdate not notified\n");
245 This->travellog.position =
This->travellog.loading_pos;
246 This->travellog.loading_pos = -1;
249 if(ready_state > READYSTATE_LOADING &&
This->doc_state <= READYSTATE_LOADING && !
This->browser_service )
252 if(ready_state == READYSTATE_COMPLETE &&
This->doc_state < READYSTATE_COMPLETE) {
254 if(!
This->browser_service)
271 IUnknown_Release(task->
doc);
279 if(task->
doc ==
This->document)
287 IUnknown_AddRef(
This->document);
306 READYSTATE ready_state;
311 IUnknown_AddRef(doc);
312 This->document = doc;
318 hres = IOleObject_GetUserClassID(oleobj, &
clsid);
320 TRACE(
"Got clsid %s\n",
323 hres = IOleObject_SetClientSite(oleobj, &
This->IOleClientSite_iface);
325 FIXME(
"SetClientSite failed: %08x\n",
hres);
327 IOleObject_Release(oleobj);
329 FIXME(
"Could not get IOleObject iface: %08x\n",
hres);
339 if(ready_state == READYSTATE_COMPLETE)
341 if(ready_state != READYSTATE_COMPLETE ||
This->doc_navigate)
343 }
else if(!
This->doc_navigate) {
359 IOleDocumentView_SetRect(
This->view, &
rect);
368 static const WCHAR wszTHIS[] = {
'T',
'H',
'I',
'S',0};
388 IStream_Release(
entry->stream);
398 hres = IUnknown_QueryInterface(
This->document, &IID_IPersistHistory, (
void**)&persist_history);
404 hres = IPersistHistory_SaveHistory(persist_history,
stream);
405 IPersistHistory_Release(persist_history);
418 for(
i=0;
i <
This->travellog.length;
i++)
420 if(
i ==
This->travellog.position)
428 static const WCHAR about_schemeW[] = {
'a',
'b',
'o',
'u',
't',
':'};
431 TRACE(
"Skipping about URL\n");
435 if(!
This->travellog.log) {
437 if(!
This->travellog.log)
440 This->travellog.size = 4;
441 }
else if(
This->travellog.size <
This->travellog.position+1) {
448 This->travellog.log = new_travellog;
449 This->travellog.size *= 2;
452 if(
This->travellog.loading_pos == -1) {
454 while(
This->travellog.length >
This->travellog.position)
458 new_entry =
This->travellog.log +
This->travellog.position;
467 if(
This->travellog.loading_pos == -1) {
468 This->travellog.position++;
470 This->travellog.position =
This->travellog.loading_pos;
471 This->travellog.loading_pos = -1;
473 if(
This->travellog.position >
This->travellog.length)
474 This->travellog.length =
This->travellog.position;
483 static const WCHAR wszShell_DocObject_View[] =
484 {
'S',
'h',
'e',
'l',
'l',
' ',
'D',
'o',
'c',
'O',
'b',
'j',
'e',
'c',
't',
' ',
'V',
'i',
'e',
'w',0};
493 wszShell_DocObject_View,
504 wszShell_DocObject_View,
517 if(!
This->document)
return;
519 if(
This->doc_navigate) {
520 IUnknown_Release(
This->doc_navigate);
524 if(
This->is_prop_notif)
528 IOleDocumentView_UIActivate(
This->view,
FALSE);
530 hres = IUnknown_QueryInterface(
This->document, &IID_IOleInPlaceObjectWindowless,
533 IOleInPlaceObjectWindowless_InPlaceDeactivate(winobj);
534 IOleInPlaceObjectWindowless_Release(winobj);
538 IOleDocumentView_Show(
This->view,
FALSE);
539 IOleDocumentView_CloseView(
This->view, 0);
540 IOleDocumentView_SetInPlaceSite(
This->view,
NULL);
541 IOleDocumentView_Release(
This->view);
547 IOleObject_Close(oleobj, OLECLOSE_NOSAVE);
549 hres = IUnknown_QueryInterface(
This->document, &IID_IHlinkTarget, (
void**)&hlink);
551 IHlinkTarget_SetBrowseContext(hlink,
NULL);
552 IHlinkTarget_Release(hlink);
561 IOleObject_SetClientSite(oleobj,
NULL);
565 IOleObject_Release(oleobj);
568 IUnknown_Release(
This->document);
581 if(!
This->document) {
582 FIXME(
"no document\n");
586 hres = IUnknown_QueryInterface(
This->document, &IID_IOleCommandTarget, (
void**)&cmdtrg);
592 hres = IOleCommandTarget_Exec(cmdtrg,
NULL, OLECMDID_REFRESH, OLECMDEXECOPT_PROMPTUSER, &vin, &vout);
593 IOleCommandTarget_Release(cmdtrg);
609 IDocHostUIHandler_Release(
This->hostui);
613 if(
This->client_disp) {
614 IDispatch_Release(
This->client_disp);
619 IOleInPlaceFrame_Release(
This->frame);
624 IOleCommandTarget_Release(
This->olecmd);
638 return IOleClientSite_QueryInterface(&
This->IOleClientSite_iface,
riid,
ppv);
644 return IOleClientSite_AddRef(&
This->IOleClientSite_iface);
650 return IOleClientSite_Release(&
This->IOleClientSite_iface);
654 const GUID *pguidCmdGroup,
ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
661 for(
i=0; prgCmds &&
i < cCmds;
i++)
662 TRACE(
"unsupported command %u (%x)\n", prgCmds[
i].cmdID, prgCmds[
i].
cmdf);
678 case OLECMDID_UPDATECOMMANDS:
681 return IOleCommandTarget_Exec(
This->olecmd, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut);
682 case OLECMDID_SETDOWNLOADSTATE:
684 This->busy =
V_I4(pvaIn) ? VARIANT_TRUE : VARIANT_FALSE;
686 return IOleCommandTarget_Exec(
This->olecmd, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut);
694 TRACE(
"Unimplemented cmdid %d\n", nCmdID);
699 if(
IsEqualGUID(pguidCmdGroup, &CGID_DocHostCmdPriv)) {
705 if(
This->doc_navigate)
706 IUnknown_Release(
This->doc_navigate);
736 hres = IUnknown_QueryInterface(
V_UNKNOWN(&htmlwindow), &IID_IHTMLWindow2, (
void**)&win2);
741 IHTMLWindow2_Release(win2);
746 TRACE(
"unsupported command %d of CGID_DocHostCmdPriv\n", nCmdID);
759 TRACE(
"Unimplemented cmdid %d of CGID_Explorer\n", nCmdID);
764 if(
IsEqualGUID(pguidCmdGroup, &CGID_ShellDocView)) {
767 TRACE(
"Unimplemented cmdid %d of CGID_ShellDocView\n", nCmdID);
772 if(
IsEqualGUID(&CGID_DocHostCommandHandler, pguidCmdGroup)) {
775 return IOleCommandTarget_Exec(
This->olecmd, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut);
799 return IOleClientSite_QueryInterface(&
This->IOleClientSite_iface,
riid,
ppv);
805 return IOleClientSite_AddRef(&
This->IOleClientSite_iface);
811 return IOleClientSite_Release(&
This->IOleClientSite_iface);
820 TRACE(
"(%p)->(%d %p %p %p)\n",
This, dwID, ppt, pcmdtReserved, pdispReserved);
823 hres = IDocHostUIHandler_ShowContextMenu(
This->hostui, dwID, ppt, pcmdtReserved,
829 FIXME(
"default action not implemented\n");
834 DOCHOSTUIINFO *pInfo)
842 hres = IDocHostUIHandler_GetHostInfo(
This->hostui, pInfo);
858 FIXME(
"(%p)->(%d %p %p %p %p)\n",
This, dwID, pActiveObject, pCommandTarget,
879 return IDocHostUIHandler_UpdateUI(
This->hostui);
910 FIXME(
"(%p)->(%p %p %X)\n",
This, prcBorder, pUIWindow, fRameWindow);
919 TRACE(
"(%p)->(%p %p %d)\n",
This, lpMsg, pguidCmdGroup, nCmdID);
922 hr = IDocHostUIHandler_TranslateAccelerator(
This->hostui, lpMsg, pguidCmdGroup, nCmdID);
935 return IDocHostUIHandler_GetOptionKeyPath(
This->hostui, pchKey,
dw);
956 return IDocHostUIHandler_GetExternal(
This->hostui, ppDispatch);
958 if(!
This->shell_ui_helper) {
967 IDispatch_AddRef(*ppDispatch);
979 return IDocHostUIHandler_TranslateUrl(
This->hostui, dwTranslate,
980 pchURLIn, ppchURLOut);
989 FIXME(
"(%p)->(%p %p)\n",
This, pDO, ppDORet);
1005 hres = IDocHostUIHandler_QueryInterface(
This->hostui, &IID_IDocHostUIHandler2,
1008 hres = IDocHostUIHandler2_GetOverrideKeyPath(
handler, pchKey,
dw);
1009 IDocHostUIHandler2_Release(
handler);
1047 return IOleClientSite_QueryInterface(&
This->IOleClientSite_iface,
riid,
ppv);
1053 return IOleClientSite_AddRef(&
This->IOleClientSite_iface);
1059 return IOleClientSite_Release(&
This->IOleClientSite_iface);
1070 READYSTATE ready_state;
1077 if(ready_state == READYSTATE_COMPLETE && !
This->doc_navigate)
1084 FIXME(
"unimplemented dispid %d\n", dispID);
1115 This->ready_state = READYSTATE_UNINITIALIZED;
1118 This->travellog.loading_pos = -1;
1130 if(
This->shell_ui_helper)
1131 IShellUIHelper2_Release(
This->shell_ui_helper);
1139 while(
This->travellog.length)
static struct sockaddr_in sa
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static void * heap_realloc(void *mem, size_t len)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static WCHAR * heap_strdupW(const WCHAR *str)
void DocHost_ClientSite_Release(DocHost *This)
void DocHost_ClientSite_Init(DocHost *This)
void call_sink(ConnectionPoint *This, DISPID dispid, DISPPARAMS *dispparams)
void ConnectionPointContainer_Destroy(ConnectionPointContainer *This)
void ConnectionPointContainer_Init(ConnectionPointContainer *This, IUnknown *impl)
void DocHost_Frame_Init(DocHost *This)
UINT(* handler)(MSIPACKAGE *)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
HRESULT WINAPI SafeArrayGetElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa)
INT WSAAPI send(IN SOCKET s, IN CONST CHAR FAR *buf, IN INT len, IN INT flags)
void set_doc_state(DocHost *This, READYSTATE doc_state)
static HRESULT WINAPI DocHostUIHandler_ShowContextMenu(IDocHostUIHandler2 *iface, DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved)
static ULONG WINAPI ClOleCommandTarget_AddRef(IOleCommandTarget *iface)
static HRESULT WINAPI DocHostUIHandler_EnableModeless(IDocHostUIHandler2 *iface, BOOL fEnable)
static ATOM doc_view_atom
static HRESULT WINAPI DocHostUIHandler_ShowUI(IDocHostUIHandler2 *iface, DWORD dwID, IOleInPlaceActiveObject *pActiveObject, IOleCommandTarget *pCommandTarget, IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc)
static HRESULT WINAPI DocHostUIHandler_HideUI(IDocHostUIHandler2 *iface)
void DocHost_Init(DocHost *This, IWebBrowser2 *wb, const IDocHostContainerVtbl *container)
static void push_ready_state_task(DocHost *This, READYSTATE ready_state)
static void object_available_task_destr(task_header_t *task)
HRESULT refresh_document(DocHost *This, const VARIANT *level)
static HRESULT WINAPI DocHostUIHandler_UpdateUI(IDocHostUIHandler2 *iface)
void DocHost_Release(DocHost *This)
static void advise_prop_notif(DocHost *This, BOOL set)
void push_dochost_task(DocHost *This, task_header_t *task, task_proc_t proc, task_destr_t destr, BOOL send)
static HRESULT WINAPI PropertyNotifySink_OnChanged(IPropertyNotifySink *iface, DISPID dispID)
void on_commandstate_change(DocHost *doc_host, LONG command, BOOL enable)
static ULONG WINAPI DocHostUIHandler_Release(IDocHostUIHandler2 *iface)
LRESULT process_dochost_tasks(DocHost *This)
void deactivate_document(DocHost *This)
static DocHost * impl_from_IPropertyNotifySink(IPropertyNotifySink *iface)
static const IPropertyNotifySinkVtbl PropertyNotifySinkVtbl
static const IDocHostUIHandler2Vtbl DocHostUIHandler2Vtbl
static void ready_state_proc(DocHost *This, task_header_t *_task)
static HRESULT WINAPI DocHostUIHandler_ResizeBorder(IDocHostUIHandler2 *iface, LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow)
#define CMDID_EXPLORER_UPDATEHISTORY
static void update_travellog(DocHost *This)
static ULONG WINAPI PropertyNotifySink_AddRef(IPropertyNotifySink *iface)
static LRESULT WINAPI doc_view_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static HRESULT WINAPI DocHostUIHandler_TranslateAccelerator(IDocHostUIHandler2 *iface, LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID)
static HRESULT WINAPI DocHostUIHandler_GetExternal(IDocHostUIHandler2 *iface, IDispatch **ppDispatch)
static HRESULT WINAPI DocHostUIHandler_FilterDataObject(IDocHostUIHandler2 *iface, IDataObject *pDO, IDataObject **ppDORet)
static HRESULT WINAPI ClOleCommandTarget_QueryStatus(IOleCommandTarget *iface, const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
HRESULT dochost_object_available(DocHost *This, IUnknown *doc)
static void ready_state_task_destr(task_header_t *_task)
static void dump_travellog(DocHost *This)
static ULONG WINAPI DocHostUIHandler_AddRef(IDocHostUIHandler2 *iface)
#define DOCHOST_DOCCANNAVIGATE
static HRESULT WINAPI DocHostUIHandler_TranslateUrl(IDocHostUIHandler2 *iface, DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut)
static HRESULT WINAPI PropertyNotifySink_OnRequestEdit(IPropertyNotifySink *iface, DISPID dispID)
static void notif_complete(DocHost *This, DISPID dispid)
static LRESULT resize_document(DocHost *This, LONG width, LONG height)
static ULONG WINAPI ClOleCommandTarget_Release(IOleCommandTarget *iface)
static DocHost * impl_from_IDocHostUIHandler2(IDocHostUIHandler2 *iface)
static DocHost * impl_from_IOleCommandTarget(IOleCommandTarget *iface)
void abort_dochost_tasks(DocHost *This, task_proc_t proc)
static void free_travellog_entry(travellog_entry_t *entry)
static HRESULT WINAPI DocHostUIHandler_OnFrameWindowActivate(IDocHostUIHandler2 *iface, BOOL fActivate)
static HRESULT WINAPI ClOleCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
static ULONG WINAPI PropertyNotifySink_Release(IPropertyNotifySink *iface)
static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface, LPOLESTR *pchKey, DWORD dw)
static void object_available(DocHost *This)
static HRESULT WINAPI DocHostUIHandler_GetOverrideKeyPath(IDocHostUIHandler2 *iface, LPOLESTR *pchKey, DWORD dw)
static void object_available_proc(DocHost *This, task_header_t *task)
void create_doc_view_hwnd(DocHost *This)
static HRESULT WINAPI DocHostUIHandler_OnDocWindowActivate(IDocHostUIHandler2 *iface, BOOL fActivate)
static HRESULT WINAPI DocHostUIHandler_QueryInterface(IDocHostUIHandler2 *iface, REFIID riid, void **ppv)
static HRESULT WINAPI PropertyNotifySink_QueryInterface(IPropertyNotifySink *iface, REFIID riid, void **ppv)
static HRESULT WINAPI DocHostUIHandler_GetHostInfo(IDocHostUIHandler2 *iface, DOCHOSTUIINFO *pInfo)
static IStream * get_travellog_stream(DocHost *This)
static const IOleCommandTargetVtbl OleCommandTargetVtbl
void release_dochost_client(DocHost *This)
static HRESULT WINAPI DocHostUIHandler_GetDropTarget(IDocHostUIHandler2 *iface, IDropTarget *pDropTarget, IDropTarget **ppDropTarget)
static void update_ready_state(DocHost *This, READYSTATE ready_state)
void update_navigation_commands(DocHost *dochost)
static HRESULT get_doc_ready_state(DocHost *This, READYSTATE *ret)
static HRESULT WINAPI ClOleCommandTarget_QueryInterface(IOleCommandTarget *iface, REFIID riid, void **ppv)
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLenum const GLfloat * params
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define DISPID_READYSTATE
void(* task_proc_t)(DocHost *, struct _task_header_t *)
void IEHTMLWindow_Init(DocHost *) DECLSPEC_HIDDEN
void NewWindowManager_Init(DocHost *) DECLSPEC_HIDDEN
void handle_navigation_error(DocHost *, HRESULT, BSTR, IHTMLWindow2 *) DECLSPEC_HIDDEN
void notify_download_state(DocHost *, BOOL) DECLSPEC_HIDDEN
HRESULT create_shell_ui_helper(IShellUIHelper2 **) DECLSPEC_HIDDEN
void(* task_destr_t)(struct _task_header_t *)
HINSTANCE ieframe_instance
REFIID LPVOID DWORD_PTR dw
static const char * debugstr_variant(const VARIANT *var)
static IOleClientSite * client_site
static VARIANTARG static DISPID
interface IHTMLWindow2 IHTMLWindow2
@ DOCHOSTUIFLAG_DISABLE_HELP_MENU
@ DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8
@ DOCHOSTUIFLAG_OPENNEWWIN
@ DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION
@ DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION
#define LOCALE_SYSTEM_DEFAULT
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define DISPATCH_PROPERTYGET
const GUID IID_IConnectionPointContainer
const GUID IID_IPropertyNotifySink
const GUID IID_IOleObject
#define IsEqualGUID(rguid1, rguid2)
#define DEFINE_OLEGUID(name, l, w1, w2)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
struct DocHost::@428 travellog
const IDocHostContainerVtbl * container_vtbl
ConnectionPointContainer cps
void(* on_command_state_change)(DocHost *, LONG, BOOL)
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
#define DISPID_NAVIGATECOMPLETE2
#define DISPID_COMMANDSTATECHANGE
#define DISPID_DOCUMENTCOMPLETE
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
BOOL WINAPI DestroyWindow(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)