browseui: Add IOleWindow to IProgressDialog.
This commit is contained in:
parent
9d68333f78
commit
744acc1ddd
|
@ -60,6 +60,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(browseui);
|
||||||
|
|
||||||
typedef struct tagProgressDialog {
|
typedef struct tagProgressDialog {
|
||||||
IProgressDialog IProgressDialog_iface;
|
IProgressDialog IProgressDialog_iface;
|
||||||
|
IOleWindow IOleWindow_iface;
|
||||||
LONG refCount;
|
LONG refCount;
|
||||||
CRITICAL_SECTION cs;
|
CRITICAL_SECTION cs;
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
|
@ -79,6 +80,11 @@ static inline ProgressDialog *impl_from_IProgressDialog(IProgressDialog *iface)
|
||||||
return CONTAINING_RECORD(iface, ProgressDialog, IProgressDialog_iface);
|
return CONTAINING_RECORD(iface, ProgressDialog, IProgressDialog_iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline ProgressDialog *impl_from_IOleWindow(IOleWindow *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, ProgressDialog, IOleWindow_iface);
|
||||||
|
}
|
||||||
|
|
||||||
static void set_buffer(LPWSTR *buffer, LPCWSTR string)
|
static void set_buffer(LPWSTR *buffer, LPCWSTR string)
|
||||||
{
|
{
|
||||||
static const WCHAR empty_string[] = {0};
|
static const WCHAR empty_string[] = {0};
|
||||||
|
@ -268,11 +274,19 @@ static void ProgressDialog_Destructor(ProgressDialog *This)
|
||||||
static HRESULT WINAPI ProgressDialog_QueryInterface(IProgressDialog *iface, REFIID iid, LPVOID *ppvOut)
|
static HRESULT WINAPI ProgressDialog_QueryInterface(IProgressDialog *iface, REFIID iid, LPVOID *ppvOut)
|
||||||
{
|
{
|
||||||
ProgressDialog *This = impl_from_IProgressDialog(iface);
|
ProgressDialog *This = impl_from_IProgressDialog(iface);
|
||||||
*ppvOut = NULL;
|
|
||||||
|
|
||||||
|
TRACE("(%p, %s, %p)\n", iface, debugstr_guid(iid), ppvOut);
|
||||||
|
if (!ppvOut)
|
||||||
|
return E_POINTER;
|
||||||
|
|
||||||
|
*ppvOut = NULL;
|
||||||
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_IProgressDialog))
|
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_IProgressDialog))
|
||||||
{
|
{
|
||||||
*ppvOut = This;
|
*ppvOut = iface;
|
||||||
|
}
|
||||||
|
else if (IsEqualIID(iid, &IID_IOleWindow))
|
||||||
|
{
|
||||||
|
*ppvOut = &This->IOleWindow_iface;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*ppvOut)
|
if (*ppvOut)
|
||||||
|
@ -495,6 +509,53 @@ static const IProgressDialogVtbl ProgressDialogVtbl =
|
||||||
ProgressDialog_Timer
|
ProgressDialog_Timer
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static HRESULT WINAPI OleWindow_QueryInterface(IOleWindow *iface, REFIID iid, LPVOID *ppvOut)
|
||||||
|
{
|
||||||
|
ProgressDialog *This = impl_from_IOleWindow(iface);
|
||||||
|
return ProgressDialog_QueryInterface(&This->IProgressDialog_iface, iid, ppvOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI OleWindow_AddRef(IOleWindow *iface)
|
||||||
|
{
|
||||||
|
ProgressDialog *This = impl_from_IOleWindow(iface);
|
||||||
|
return ProgressDialog_AddRef(&This->IProgressDialog_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI OleWindow_Release(IOleWindow *iface)
|
||||||
|
{
|
||||||
|
ProgressDialog *This = impl_from_IOleWindow(iface);
|
||||||
|
return ProgressDialog_Release(&This->IProgressDialog_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI OleWindow_GetWindow(IOleWindow* iface, HWND* phwnd)
|
||||||
|
{
|
||||||
|
ProgressDialog *This = impl_from_IOleWindow(iface);
|
||||||
|
|
||||||
|
TRACE("(%p, %p)\n", This, phwnd);
|
||||||
|
EnterCriticalSection(&This->cs);
|
||||||
|
*phwnd = This->hwnd;
|
||||||
|
LeaveCriticalSection(&This->cs);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI OleWindow_ContextSensitiveHelp(IOleWindow* iface, BOOL fEnterMode)
|
||||||
|
{
|
||||||
|
ProgressDialog *This = impl_from_IOleWindow(iface);
|
||||||
|
|
||||||
|
FIXME("(%p, %d): stub\n", This, fEnterMode);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IOleWindowVtbl OleWindowVtbl =
|
||||||
|
{
|
||||||
|
OleWindow_QueryInterface,
|
||||||
|
OleWindow_AddRef,
|
||||||
|
OleWindow_Release,
|
||||||
|
OleWindow_GetWindow,
|
||||||
|
OleWindow_ContextSensitiveHelp
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
HRESULT ProgressDialog_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
|
HRESULT ProgressDialog_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
|
||||||
{
|
{
|
||||||
ProgressDialog *This;
|
ProgressDialog *This;
|
||||||
|
@ -506,6 +567,7 @@ HRESULT ProgressDialog_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
This->IProgressDialog_iface.lpVtbl = &ProgressDialogVtbl;
|
This->IProgressDialog_iface.lpVtbl = &ProgressDialogVtbl;
|
||||||
|
This->IOleWindow_iface.lpVtbl = &OleWindowVtbl;
|
||||||
This->refCount = 1;
|
This->refCount = 1;
|
||||||
InitializeCriticalSection(&This->cs);
|
InitializeCriticalSection(&This->cs);
|
||||||
This->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": ProgressDialog.cs");
|
This->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": ProgressDialog.cs");
|
||||||
|
|
Loading…
Reference in New Issue