strmbase: Implement BaseControlWindow.
This commit is contained in:
parent
189800e04c
commit
73efbff484
|
@ -30,6 +30,16 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(strmbase);
|
||||
|
||||
static inline BaseControlWindow *impl_from_IVideoWindow( IVideoWindow *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, BaseControlWindow, IVideoWindow_iface);
|
||||
}
|
||||
|
||||
static inline BaseControlWindow *impl_from_BaseWindow(BaseWindow *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, BaseControlWindow, baseWindow);
|
||||
}
|
||||
|
||||
static LRESULT CALLBACK WndProcW(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
BaseWindow* This = (BaseWindow*)GetWindowLongPtrW(hwnd, 0);
|
||||
|
@ -144,3 +154,568 @@ HRESULT WINAPI BaseWindowImpl_DoneWithWindow(BaseWindow *This)
|
|||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
RECT WINAPI BaseWindowImpl_GetDefaultRect(BaseWindow *This)
|
||||
{
|
||||
static RECT defRect = {0, 0, 800, 600};
|
||||
return defRect;
|
||||
}
|
||||
|
||||
BOOL WINAPI BaseControlWindowImpl_PossiblyEatMessage(BaseWindow *This, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
BaseControlWindow* pControlWindow = impl_from_BaseWindow(This);
|
||||
|
||||
if (pControlWindow->hwndDrain)
|
||||
{
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_KEYDOWN:
|
||||
case WM_KEYUP:
|
||||
case WM_LBUTTONDBLCLK:
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_LBUTTONUP:
|
||||
case WM_MBUTTONDBLCLK:
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_MBUTTONUP:
|
||||
case WM_MOUSEACTIVATE:
|
||||
case WM_MOUSEMOVE:
|
||||
case WM_NCLBUTTONDBLCLK:
|
||||
case WM_NCLBUTTONDOWN:
|
||||
case WM_NCLBUTTONUP:
|
||||
case WM_NCMBUTTONDBLCLK:
|
||||
case WM_NCMBUTTONDOWN:
|
||||
case WM_NCMBUTTONUP:
|
||||
case WM_NCMOUSEMOVE:
|
||||
case WM_NCRBUTTONDBLCLK:
|
||||
case WM_NCRBUTTONDOWN:
|
||||
case WM_NCRBUTTONUP:
|
||||
case WM_RBUTTONDBLCLK:
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_RBUTTONUP:
|
||||
PostMessageW(pControlWindow->hwndDrain, uMsg, wParam, lParam);
|
||||
return TRUE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const IVideoWindowVtbl *lpVtbl, BaseFilter *owner, CRITICAL_SECTION *lock, BasePin* pPin,const BaseWindowFuncTable *pFuncsTable)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
hr = BaseWindow_Init(&pControlWindow->baseWindow, pFuncsTable);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
pControlWindow->IVideoWindow_iface.lpVtbl = lpVtbl;
|
||||
pControlWindow->AutoShow = TRUE;
|
||||
pControlWindow->hwndDrain = NULL;
|
||||
pControlWindow->hwndOwner = NULL;
|
||||
pControlWindow->pFilter = owner;
|
||||
pControlWindow->pInterfaceLock = lock;
|
||||
pControlWindow->pPin = pPin;
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT*pctinfo)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo(IVideoWindow *iface, UINT iTInfo, LCID lcid, ITypeInfo**ppTInfo)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%d, %d, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames(IVideoWindow *iface, REFIID riid, LPOLESTR*rgszNames, UINT cNames, LCID lcid, DISPID*rgDispId)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%s (%p), %p, %d, %d, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_Invoke(IVideoWindow *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS*pDispParams, VARIANT*pVarResult, EXCEPINFO*pExepInfo, UINT*puArgErr)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%d, %s (%p), %d, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Caption(IVideoWindow *iface, BSTR strCaption)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%s (%p))\n", This, iface, debugstr_w(strCaption), strCaption);
|
||||
|
||||
if (!SetWindowTextW(This->baseWindow.hWnd, strCaption))
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Caption(IVideoWindow *iface, BSTR *strCaption)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, strCaption);
|
||||
|
||||
GetWindowTextW(This->baseWindow.hWnd, (LPWSTR)strCaption, 100);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyle(IVideoWindow *iface, LONG WindowStyle)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
LONG old;
|
||||
|
||||
old = GetWindowLongW(This->baseWindow.hWnd, GWL_STYLE);
|
||||
|
||||
TRACE("(%p/%p)->(%x -> %x)\n", This, iface, old, WindowStyle);
|
||||
|
||||
if (WindowStyle & (WS_DISABLED|WS_HSCROLL|WS_ICONIC|WS_MAXIMIZE|WS_MINIMIZE|WS_VSCROLL))
|
||||
return E_INVALIDARG;
|
||||
|
||||
SetWindowLongW(This->baseWindow.hWnd, GWL_STYLE, WindowStyle);
|
||||
SetWindowPos(This->baseWindow.hWnd,0,0,0,0,0,SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOZORDER);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyle(IVideoWindow *iface, LONG *WindowStyle)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, WindowStyle);
|
||||
|
||||
*WindowStyle = GetWindowLongW(This->baseWindow.hWnd, GWL_STYLE);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyleEx(IVideoWindow *iface, LONG WindowStyleEx)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, WindowStyleEx);
|
||||
|
||||
if (!SetWindowLongW(This->baseWindow.hWnd, GWL_EXSTYLE, WindowStyleEx))
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyleEx(IVideoWindow *iface, LONG *WindowStyleEx)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, WindowStyleEx);
|
||||
|
||||
*WindowStyleEx = GetWindowLongW(This->baseWindow.hWnd, GWL_EXSTYLE);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_AutoShow(IVideoWindow *iface, LONG AutoShow)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, AutoShow);
|
||||
|
||||
This->AutoShow = AutoShow;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_AutoShow(IVideoWindow *iface, LONG *AutoShow)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, AutoShow);
|
||||
|
||||
*AutoShow = This->AutoShow;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_WindowState(IVideoWindow *iface, LONG WindowState)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, WindowState);
|
||||
ShowWindow(This->baseWindow.hWnd, WindowState);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_WindowState(IVideoWindow *iface, LONG *WindowState)
|
||||
{
|
||||
WINDOWPLACEMENT place;
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
place.length = sizeof(place);
|
||||
GetWindowPlacement(This->baseWindow.hWnd, &place);
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, WindowState);
|
||||
*WindowState = place.showCmd;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow *iface, LONG BackgroundPalette)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%d): stub !!!\n", This, iface, BackgroundPalette);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow *iface, LONG *pBackgroundPalette)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, pBackgroundPalette);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Visible(IVideoWindow *iface, LONG Visible)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, Visible);
|
||||
|
||||
ShowWindow(This->baseWindow.hWnd, Visible ? SW_SHOW : SW_HIDE);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Visible(IVideoWindow *iface, LONG *pVisible)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pVisible);
|
||||
|
||||
*pVisible = IsWindowVisible(This->baseWindow.hWnd);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Left(IVideoWindow *iface, LONG Left)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
RECT WindowPos;
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, Left);
|
||||
|
||||
GetWindowRect(This->baseWindow.hWnd, &WindowPos);
|
||||
if (!SetWindowPos(This->baseWindow.hWnd, NULL, Left, WindowPos.top, 0, 0, SWP_NOZORDER|SWP_NOSIZE))
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Left(IVideoWindow *iface, LONG *pLeft)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
RECT WindowPos;
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pLeft);
|
||||
GetWindowRect(This->baseWindow.hWnd, &WindowPos);
|
||||
|
||||
*pLeft = WindowPos.left;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Width(IVideoWindow *iface, LONG Width)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, Width);
|
||||
|
||||
if (!SetWindowPos(This->baseWindow.hWnd, NULL, 0, 0, Width, This->baseWindow.Height, SWP_NOZORDER|SWP_NOMOVE))
|
||||
return E_FAIL;
|
||||
|
||||
This->baseWindow.Width = Width;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Width(IVideoWindow *iface, LONG *pWidth)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pWidth);
|
||||
|
||||
*pWidth = This->baseWindow.Width;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Top(IVideoWindow *iface, LONG Top)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
RECT WindowPos;
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, Top);
|
||||
GetWindowRect(This->baseWindow.hWnd, &WindowPos);
|
||||
|
||||
if (!SetWindowPos(This->baseWindow.hWnd, NULL, WindowPos.left, Top, 0, 0, SWP_NOZORDER|SWP_NOSIZE))
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Top(IVideoWindow *iface, LONG *pTop)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
RECT WindowPos;
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pTop);
|
||||
GetWindowRect(This->baseWindow.hWnd, &WindowPos);
|
||||
|
||||
*pTop = WindowPos.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Height(IVideoWindow *iface, LONG Height)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, Height);
|
||||
|
||||
if (!SetWindowPos(This->baseWindow.hWnd, NULL, 0, 0, This->baseWindow.Width, Height, SWP_NOZORDER|SWP_NOMOVE))
|
||||
return E_FAIL;
|
||||
|
||||
This->baseWindow.Height = Height;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Height(IVideoWindow *iface, LONG *pHeight)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pHeight);
|
||||
|
||||
*pHeight = This->baseWindow.Height;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Owner(IVideoWindow *iface, OAHWND Owner)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%08x)\n", This, iface, (DWORD) Owner);
|
||||
|
||||
This->hwndOwner = (HWND)Owner;
|
||||
SetParent(This->baseWindow.hWnd, This->hwndOwner);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Owner(IVideoWindow *iface, OAHWND *Owner)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, Owner);
|
||||
|
||||
*(HWND*)Owner = This->hwndOwner;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain(IVideoWindow *iface, OAHWND Drain)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%08x)\n", This, iface, (DWORD) Drain);
|
||||
|
||||
This->hwndDrain = (HWND)Drain;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain(IVideoWindow *iface, OAHWND *Drain)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, Drain);
|
||||
|
||||
*Drain = (OAHWND)This->hwndDrain;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_BorderColor(IVideoWindow *iface, LONG *Color)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, Color);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_BorderColor(IVideoWindow *iface, LONG Color)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%d): stub !!!\n", This, iface, Color);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_FullScreenMode(IVideoWindow *iface, LONG *FullScreenMode)
|
||||
{
|
||||
TRACE("(%p)->(%p)\n", iface, FullScreenMode);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_FullScreenMode(IVideoWindow *iface, LONG FullScreenMode)
|
||||
{
|
||||
TRACE("(%p)->(%d)\n", iface, FullScreenMode);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_SetWindowForeground(IVideoWindow *iface, LONG Focus)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
BOOL ret;
|
||||
IPin* pPin;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, Focus);
|
||||
|
||||
if ((Focus != FALSE) && (Focus != TRUE))
|
||||
return E_INVALIDARG;
|
||||
|
||||
hr = IPin_ConnectedTo(&This->pPin->IPin_iface, &pPin);
|
||||
if ((hr != S_OK) || !pPin)
|
||||
return VFW_E_NOT_CONNECTED;
|
||||
|
||||
if (Focus)
|
||||
ret = SetForegroundWindow(This->baseWindow.hWnd);
|
||||
else
|
||||
ret = SetWindowPos(This->baseWindow.hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
|
||||
|
||||
if (!ret)
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition(IVideoWindow *iface, LONG Left, LONG Top, LONG Width, LONG Height)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d, %d, %d, %d)\n", This, iface, Left, Top, Width, Height);
|
||||
|
||||
if (!SetWindowPos(This->baseWindow.hWnd, NULL, Left, Top, Width, Height, SWP_NOZORDER))
|
||||
return E_FAIL;
|
||||
|
||||
This->baseWindow.Width = Width;
|
||||
This->baseWindow.Height = Height;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetWindowPosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
RECT WindowPos;
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p, %p, %p)\n", This, iface, pLeft, pTop, pWidth, pHeight);
|
||||
GetWindowRect(This->baseWindow.hWnd, &WindowPos);
|
||||
|
||||
*pLeft = WindowPos.left;
|
||||
*pTop = WindowPos.top;
|
||||
*pWidth = This->baseWindow.Width;
|
||||
*pHeight = This->baseWindow.Height;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_NotifyOwnerMessage(IVideoWindow *iface, OAHWND hwnd, LONG uMsg, LONG_PTR wParam, LONG_PTR lParam)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%08lx, %d, %08lx, %08lx)\n", This, iface, hwnd, uMsg, wParam, lParam);
|
||||
|
||||
if (!PostMessageW(This->baseWindow.hWnd, uMsg, wParam, lParam))
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetMinIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
RECT defaultRect;
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p)\n", This, iface, pWidth, pHeight);
|
||||
defaultRect = This->baseWindow.pFuncsTable->pfnGetDefaultRect(&This->baseWindow);
|
||||
|
||||
*pWidth = defaultRect.right - defaultRect.left;
|
||||
*pHeight = defaultRect.bottom - defaultRect.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetMaxIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
RECT defaultRect;
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p)\n", This, iface, pWidth, pHeight);
|
||||
defaultRect = This->baseWindow.pFuncsTable->pfnGetDefaultRect(&This->baseWindow);
|
||||
|
||||
*pWidth = defaultRect.right - defaultRect.left;
|
||||
*pHeight = defaultRect.bottom - defaultRect.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_HideCursor(IVideoWindow *iface, LONG HideCursor)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%d): stub !!!\n", This, iface, HideCursor);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *CursorHidden)
|
||||
{
|
||||
BaseControlWindow* This = impl_from_IVideoWindow(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, CursorHidden);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -407,6 +407,7 @@ typedef struct tagBaseWindow
|
|||
} BaseWindow;
|
||||
|
||||
typedef LPWSTR (WINAPI *BaseWindow_GetClassWindowStyles)(BaseWindow *This, DWORD *pClassStyles, DWORD *pWindowStyles, DWORD *pWindowStylesEx);
|
||||
typedef RECT (WINAPI *BaseWindow_GetDefaultRect)(BaseWindow *This);
|
||||
typedef BOOL (WINAPI *BaseWindow_PossiblyEatMessage)(BaseWindow *This, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
typedef LRESULT (WINAPI *BaseWindow_OnReceiveMessage)(BaseWindow *This, HWND hwnd, INT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
typedef BOOL (WINAPI *BaseWindow_OnSize)(BaseWindow *This, LONG Height, LONG Width);
|
||||
|
@ -415,6 +416,7 @@ typedef struct BaseWindowFuncTable
|
|||
{
|
||||
/* Required */
|
||||
BaseWindow_GetClassWindowStyles pfnGetClassWindowStyles;
|
||||
BaseWindow_GetDefaultRect pfnGetDefaultRect;
|
||||
/* Optional, WinProc Related */
|
||||
BaseWindow_OnReceiveMessage pfnOnReceiveMessage;
|
||||
BaseWindow_PossiblyEatMessage pfnPossiblyEatMessage;
|
||||
|
@ -426,9 +428,73 @@ HRESULT WINAPI BaseWindow_Destroy(BaseWindow *pBaseWindow);
|
|||
|
||||
HRESULT WINAPI BaseWindowImpl_PrepareWindow(BaseWindow *This);
|
||||
HRESULT WINAPI BaseWindowImpl_DoneWithWindow(BaseWindow *This);
|
||||
RECT WINAPI BaseWindowImpl_GetDefaultRect(BaseWindow *This);
|
||||
LRESULT WINAPI BaseWindowImpl_OnReceiveMessage(BaseWindow *This, HWND hwnd, INT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
BOOL WINAPI BaseWindowImpl_OnSize(BaseWindow *This, LONG Height, LONG Width);
|
||||
|
||||
#ifdef __IVideoWindow_FWD_DEFINED__
|
||||
typedef struct tagBaseControlWindow
|
||||
{
|
||||
BaseWindow baseWindow;
|
||||
IVideoWindow IVideoWindow_iface;
|
||||
|
||||
BOOL AutoShow;
|
||||
HWND hwndDrain;
|
||||
HWND hwndOwner;
|
||||
BaseFilter* pFilter;
|
||||
CRITICAL_SECTION* pInterfaceLock;
|
||||
BasePin* pPin;
|
||||
} BaseControlWindow;
|
||||
|
||||
HRESULT WINAPI BaseControlWindow_Init(BaseControlWindow *pControlWindow, const IVideoWindowVtbl *lpVtbl, BaseFilter *owner, CRITICAL_SECTION *lock, BasePin* pPin, const BaseWindowFuncTable* pFuncsTable);
|
||||
|
||||
BOOL WINAPI BaseControlWindowImpl_PossiblyEatMessage(BaseWindow *This, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT*pctinfo);
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo(IVideoWindow *iface, UINT iTInfo, LCID lcid, ITypeInfo**ppTInfo);
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames(IVideoWindow *iface, REFIID riid, LPOLESTR*rgszNames, UINT cNames, LCID lcid, DISPID*rgDispId);
|
||||
HRESULT WINAPI BaseControlWindowImpl_Invoke(IVideoWindow *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS*pDispParams, VARIANT*pVarResult, EXCEPINFO*pExepInfo, UINT*puArgErr);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Caption(IVideoWindow *iface, BSTR strCaption);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Caption(IVideoWindow *iface, BSTR *strCaption);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyle(IVideoWindow *iface, LONG WindowStyle);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyle(IVideoWindow *iface, LONG *WindowStyle);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyleEx(IVideoWindow *iface, LONG WindowStyleEx);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyleEx(IVideoWindow *iface, LONG *WindowStyleEx);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_AutoShow(IVideoWindow *iface, LONG AutoShow);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_AutoShow(IVideoWindow *iface, LONG *AutoShow);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_WindowState(IVideoWindow *iface, LONG WindowState);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_WindowState(IVideoWindow *iface, LONG *WindowState);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow *iface, LONG BackgroundPalette);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow *iface, LONG *pBackgroundPalette);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Visible(IVideoWindow *iface, LONG Visible);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Visible(IVideoWindow *iface, LONG *pVisible);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Left(IVideoWindow *iface, LONG Left);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Left(IVideoWindow *iface, LONG *pLeft);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Width(IVideoWindow *iface, LONG Width);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Width(IVideoWindow *iface, LONG *pWidth);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Top(IVideoWindow *iface, LONG Top);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Top(IVideoWindow *iface, LONG *pTop);
|
||||
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Height(IVideoWindow *iface, LONG Height);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Height(IVideoWindow *iface, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_Owner(IVideoWindow *iface, OAHWND Owner);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_Owner(IVideoWindow *iface, OAHWND *Owner);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain(IVideoWindow *iface, OAHWND Drain);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain(IVideoWindow *iface, OAHWND *Drain);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_BorderColor(IVideoWindow *iface, LONG *Color);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_BorderColor(IVideoWindow *iface, LONG Color);
|
||||
HRESULT WINAPI BaseControlWindowImpl_get_FullScreenMode(IVideoWindow *iface, LONG *FullScreenMode);
|
||||
HRESULT WINAPI BaseControlWindowImpl_put_FullScreenMode(IVideoWindow *iface, LONG FullScreenMode);
|
||||
HRESULT WINAPI BaseControlWindowImpl_SetWindowForeground(IVideoWindow *iface, LONG Focus);
|
||||
HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition(IVideoWindow *iface, LONG Left, LONG Top, LONG Width, LONG Height);
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetWindowPosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlWindowImpl_NotifyOwnerMessage(IVideoWindow *iface, OAHWND hwnd, LONG uMsg, LONG_PTR wParam, LONG_PTR lParam);
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetMinIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetMaxIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlWindowImpl_HideCursor(IVideoWindow *iface, LONG HideCursor);
|
||||
HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *CursorHidden);
|
||||
#endif
|
||||
|
||||
/* Dll Functions */
|
||||
BOOL WINAPI STRMBASE_DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv);
|
||||
HRESULT WINAPI STRMBASE_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
|
||||
|
|
Loading…
Reference in New Issue