2 * Generic Implementation of strmbase window classes
4 * Copyright 2012 Aric Stewart, CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 #include "wine/debug.h"
25 #include "wine/unicode.h"
26 #include "wine/strmbase.h"
31 WINE_DEFAULT_DEBUG_CHANNEL(strmbase
);
33 static inline BaseControlWindow
*impl_from_IVideoWindow( IVideoWindow
*iface
)
35 return CONTAINING_RECORD(iface
, BaseControlWindow
, IVideoWindow_iface
);
38 static inline BaseControlWindow
*impl_from_BaseWindow(BaseWindow
*iface
)
40 return CONTAINING_RECORD(iface
, BaseControlWindow
, baseWindow
);
43 static LRESULT CALLBACK
WndProcW(HWND hwnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
45 BaseWindow
* This
= (BaseWindow
*)GetWindowLongPtrW(hwnd
, 0);
48 return DefWindowProcW(hwnd
, uMsg
, wParam
, lParam
);
50 if (This
->pFuncsTable
->pfnOnReceiveMessage
)
51 return This
->pFuncsTable
->pfnOnReceiveMessage(This
, hwnd
, uMsg
, wParam
, lParam
);
53 return BaseWindowImpl_OnReceiveMessage(This
, hwnd
, uMsg
, wParam
, lParam
);
56 LRESULT WINAPI
BaseWindowImpl_OnReceiveMessage(BaseWindow
*This
, HWND hwnd
, INT uMsg
, WPARAM wParam
, LPARAM lParam
)
58 if (This
->pFuncsTable
->pfnPossiblyEatMessage
&& This
->pFuncsTable
->pfnPossiblyEatMessage(This
, uMsg
, wParam
, lParam
))
64 if (This
->pFuncsTable
->pfnOnSize
)
65 return This
->pFuncsTable
->pfnOnSize(This
, LOWORD(lParam
), HIWORD(lParam
));
67 return BaseWindowImpl_OnSize(This
, LOWORD(lParam
), HIWORD(lParam
));
70 return DefWindowProcW(hwnd
, uMsg
, wParam
, lParam
);
73 BOOL WINAPI
BaseWindowImpl_OnSize(BaseWindow
*This
, LONG Width
, LONG Height
)
76 This
->Height
= Height
;
80 HRESULT WINAPI
BaseWindow_Init(BaseWindow
*pBaseWindow
, const BaseWindowFuncTable
* pFuncsTable
)
85 ZeroMemory(pBaseWindow
,sizeof(BaseWindow
));
86 pBaseWindow
->pFuncsTable
= pFuncsTable
;
91 HRESULT WINAPI
BaseWindow_Destroy(BaseWindow
*This
)
94 BaseWindowImpl_DoneWithWindow(This
);
96 HeapFree(GetProcessHeap(), 0, This
);
100 HRESULT WINAPI
BaseWindowImpl_PrepareWindow(BaseWindow
*This
)
103 static const WCHAR windownameW
[] = { 'A','c','t','i','v','e','M','o','v','i','e',' ','W','i','n','d','o','w',0 };
105 This
->pClassName
= This
->pFuncsTable
->pfnGetClassWindowStyles(This
, &This
->ClassStyles
, &This
->WindowStyles
, &This
->WindowStylesEx
);
107 winclass
.style
= This
->ClassStyles
;
108 winclass
.lpfnWndProc
= WndProcW
;
109 winclass
.cbClsExtra
= 0;
110 winclass
.cbWndExtra
= sizeof(BaseWindow
*);
111 winclass
.hInstance
= This
->hInstance
;
112 winclass
.hIcon
= NULL
;
113 winclass
.hCursor
= NULL
;
114 winclass
.hbrBackground
= GetStockObject(BLACK_BRUSH
);
115 winclass
.lpszMenuName
= NULL
;
116 winclass
.lpszClassName
= This
->pClassName
;
117 if (!RegisterClassW(&winclass
) && GetLastError() != ERROR_CLASS_ALREADY_EXISTS
)
119 ERR("Unable to register window class: %u\n", GetLastError());
123 This
->hWnd
= CreateWindowExW(This
->WindowStylesEx
,
124 This
->pClassName
, windownameW
,
126 CW_USEDEFAULT
, CW_USEDEFAULT
, CW_USEDEFAULT
,
127 CW_USEDEFAULT
, NULL
, NULL
, This
->hInstance
,
132 ERR("Unable to create window\n");
136 SetWindowLongPtrW(This
->hWnd
, 0, (LONG_PTR
)This
);
138 This
->hDC
= GetDC(This
->hWnd
);
143 HRESULT WINAPI
BaseWindowImpl_DoneWithWindow(BaseWindow
*This
)
149 ReleaseDC(This
->hWnd
, This
->hDC
);
152 DestroyWindow(This
->hWnd
);
158 RECT WINAPI
BaseWindowImpl_GetDefaultRect(BaseWindow
*This
)
160 static RECT defRect
= {0, 0, 800, 600};
164 BOOL WINAPI
BaseControlWindowImpl_PossiblyEatMessage(BaseWindow
*This
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
166 BaseControlWindow
* pControlWindow
= impl_from_BaseWindow(This
);
168 if (pControlWindow
->hwndDrain
)
174 case WM_LBUTTONDBLCLK
:
177 case WM_MBUTTONDBLCLK
:
180 case WM_MOUSEACTIVATE
:
182 case WM_NCLBUTTONDBLCLK
:
183 case WM_NCLBUTTONDOWN
:
185 case WM_NCMBUTTONDBLCLK
:
186 case WM_NCMBUTTONDOWN
:
189 case WM_NCRBUTTONDBLCLK
:
190 case WM_NCRBUTTONDOWN
:
192 case WM_RBUTTONDBLCLK
:
195 PostMessageW(pControlWindow
->hwndDrain
, uMsg
, wParam
, lParam
);
205 HRESULT WINAPI
BaseControlWindow_Init(BaseControlWindow
*pControlWindow
, const IVideoWindowVtbl
*lpVtbl
, BaseFilter
*owner
, CRITICAL_SECTION
*lock
, BasePin
* pPin
,const BaseWindowFuncTable
*pFuncsTable
)
209 hr
= BaseWindow_Init(&pControlWindow
->baseWindow
, pFuncsTable
);
212 pControlWindow
->IVideoWindow_iface
.lpVtbl
= lpVtbl
;
213 pControlWindow
->AutoShow
= TRUE
;
214 pControlWindow
->hwndDrain
= NULL
;
215 pControlWindow
->hwndOwner
= NULL
;
216 pControlWindow
->pFilter
= owner
;
217 pControlWindow
->pInterfaceLock
= lock
;
218 pControlWindow
->pPin
= pPin
;
223 HRESULT WINAPI
BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow
*iface
, UINT
*pctinfo
)
225 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
227 FIXME("(%p/%p)->(%p): stub !!!\n", This
, iface
, pctinfo
);
232 HRESULT WINAPI
BaseControlWindowImpl_GetTypeInfo(IVideoWindow
*iface
, UINT iTInfo
, LCID lcid
, ITypeInfo
**ppTInfo
)
234 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
236 FIXME("(%p/%p)->(%d, %d, %p): stub !!!\n", This
, iface
, iTInfo
, lcid
, ppTInfo
);
241 HRESULT WINAPI
BaseControlWindowImpl_GetIDsOfNames(IVideoWindow
*iface
, REFIID riid
, LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
243 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
245 FIXME("(%p/%p)->(%s (%p), %p, %d, %d, %p): stub !!!\n", This
, iface
, debugstr_guid(riid
), riid
, rgszNames
, cNames
, lcid
, rgDispId
);
250 HRESULT WINAPI
BaseControlWindowImpl_Invoke(IVideoWindow
*iface
, DISPID dispIdMember
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
, EXCEPINFO
*pExepInfo
, UINT
*puArgErr
)
252 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
254 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
);
259 HRESULT WINAPI
BaseControlWindowImpl_put_Caption(IVideoWindow
*iface
, BSTR strCaption
)
261 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
263 TRACE("(%p/%p)->(%s (%p))\n", This
, iface
, debugstr_w(strCaption
), strCaption
);
265 if (!SetWindowTextW(This
->baseWindow
.hWnd
, strCaption
))
271 HRESULT WINAPI
BaseControlWindowImpl_get_Caption(IVideoWindow
*iface
, BSTR
*strCaption
)
273 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
275 TRACE("(%p/%p)->(%p)\n", This
, iface
, strCaption
);
277 GetWindowTextW(This
->baseWindow
.hWnd
, (LPWSTR
)strCaption
, 100);
282 HRESULT WINAPI
BaseControlWindowImpl_put_WindowStyle(IVideoWindow
*iface
, LONG WindowStyle
)
284 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
287 old
= GetWindowLongW(This
->baseWindow
.hWnd
, GWL_STYLE
);
289 TRACE("(%p/%p)->(%x -> %x)\n", This
, iface
, old
, WindowStyle
);
291 if (WindowStyle
& (WS_DISABLED
|WS_HSCROLL
|WS_ICONIC
|WS_MAXIMIZE
|WS_MINIMIZE
|WS_VSCROLL
))
294 SetWindowLongW(This
->baseWindow
.hWnd
, GWL_STYLE
, WindowStyle
);
295 SetWindowPos(This
->baseWindow
.hWnd
,0,0,0,0,0,SWP_FRAMECHANGED
|SWP_NOSIZE
|SWP_NOZORDER
);
300 HRESULT WINAPI
BaseControlWindowImpl_get_WindowStyle(IVideoWindow
*iface
, LONG
*WindowStyle
)
302 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
304 TRACE("(%p/%p)->(%p)\n", This
, iface
, WindowStyle
);
306 *WindowStyle
= GetWindowLongW(This
->baseWindow
.hWnd
, GWL_STYLE
);
311 HRESULT WINAPI
BaseControlWindowImpl_put_WindowStyleEx(IVideoWindow
*iface
, LONG WindowStyleEx
)
313 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
315 TRACE("(%p/%p)->(%d)\n", This
, iface
, WindowStyleEx
);
317 if (!SetWindowLongW(This
->baseWindow
.hWnd
, GWL_EXSTYLE
, WindowStyleEx
))
323 HRESULT WINAPI
BaseControlWindowImpl_get_WindowStyleEx(IVideoWindow
*iface
, LONG
*WindowStyleEx
)
325 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
327 TRACE("(%p/%p)->(%p)\n", This
, iface
, WindowStyleEx
);
329 *WindowStyleEx
= GetWindowLongW(This
->baseWindow
.hWnd
, GWL_EXSTYLE
);
334 HRESULT WINAPI
BaseControlWindowImpl_put_AutoShow(IVideoWindow
*iface
, LONG AutoShow
)
336 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
338 TRACE("(%p/%p)->(%d)\n", This
, iface
, AutoShow
);
340 This
->AutoShow
= AutoShow
;
345 HRESULT WINAPI
BaseControlWindowImpl_get_AutoShow(IVideoWindow
*iface
, LONG
*AutoShow
)
347 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
349 TRACE("(%p/%p)->(%p)\n", This
, iface
, AutoShow
);
351 *AutoShow
= This
->AutoShow
;
356 HRESULT WINAPI
BaseControlWindowImpl_put_WindowState(IVideoWindow
*iface
, LONG WindowState
)
358 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
360 TRACE("(%p/%p)->(%d)\n", This
, iface
, WindowState
);
361 ShowWindow(This
->baseWindow
.hWnd
, WindowState
);
365 HRESULT WINAPI
BaseControlWindowImpl_get_WindowState(IVideoWindow
*iface
, LONG
*WindowState
)
367 WINDOWPLACEMENT place
;
368 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
370 place
.length
= sizeof(place
);
371 GetWindowPlacement(This
->baseWindow
.hWnd
, &place
);
372 TRACE("(%p/%p)->(%p)\n", This
, iface
, WindowState
);
373 *WindowState
= place
.showCmd
;
378 HRESULT WINAPI
BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow
*iface
, LONG BackgroundPalette
)
380 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
382 FIXME("(%p/%p)->(%d): stub !!!\n", This
, iface
, BackgroundPalette
);
387 HRESULT WINAPI
BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow
*iface
, LONG
*pBackgroundPalette
)
389 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
391 FIXME("(%p/%p)->(%p): stub !!!\n", This
, iface
, pBackgroundPalette
);
396 HRESULT WINAPI
BaseControlWindowImpl_put_Visible(IVideoWindow
*iface
, LONG Visible
)
398 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
400 TRACE("(%p/%p)->(%d)\n", This
, iface
, Visible
);
402 ShowWindow(This
->baseWindow
.hWnd
, Visible
? SW_SHOW
: SW_HIDE
);
407 HRESULT WINAPI
BaseControlWindowImpl_get_Visible(IVideoWindow
*iface
, LONG
*pVisible
)
409 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
411 TRACE("(%p/%p)->(%p)\n", This
, iface
, pVisible
);
413 *pVisible
= IsWindowVisible(This
->baseWindow
.hWnd
);
418 HRESULT WINAPI
BaseControlWindowImpl_put_Left(IVideoWindow
*iface
, LONG Left
)
420 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
423 TRACE("(%p/%p)->(%d)\n", This
, iface
, Left
);
425 GetWindowRect(This
->baseWindow
.hWnd
, &WindowPos
);
426 if (!SetWindowPos(This
->baseWindow
.hWnd
, NULL
, Left
, WindowPos
.top
, 0, 0, SWP_NOZORDER
|SWP_NOSIZE
))
432 HRESULT WINAPI
BaseControlWindowImpl_get_Left(IVideoWindow
*iface
, LONG
*pLeft
)
434 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
437 TRACE("(%p/%p)->(%p)\n", This
, iface
, pLeft
);
438 GetWindowRect(This
->baseWindow
.hWnd
, &WindowPos
);
440 *pLeft
= WindowPos
.left
;
445 HRESULT WINAPI
BaseControlWindowImpl_put_Width(IVideoWindow
*iface
, LONG Width
)
447 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
449 TRACE("(%p/%p)->(%d)\n", This
, iface
, Width
);
451 if (!SetWindowPos(This
->baseWindow
.hWnd
, NULL
, 0, 0, Width
, This
->baseWindow
.Height
, SWP_NOZORDER
|SWP_NOMOVE
))
454 This
->baseWindow
.Width
= Width
;
459 HRESULT WINAPI
BaseControlWindowImpl_get_Width(IVideoWindow
*iface
, LONG
*pWidth
)
461 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
463 TRACE("(%p/%p)->(%p)\n", This
, iface
, pWidth
);
465 *pWidth
= This
->baseWindow
.Width
;
470 HRESULT WINAPI
BaseControlWindowImpl_put_Top(IVideoWindow
*iface
, LONG Top
)
472 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
475 TRACE("(%p/%p)->(%d)\n", This
, iface
, Top
);
476 GetWindowRect(This
->baseWindow
.hWnd
, &WindowPos
);
478 if (!SetWindowPos(This
->baseWindow
.hWnd
, NULL
, WindowPos
.left
, Top
, 0, 0, SWP_NOZORDER
|SWP_NOSIZE
))
484 HRESULT WINAPI
BaseControlWindowImpl_get_Top(IVideoWindow
*iface
, LONG
*pTop
)
486 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
489 TRACE("(%p/%p)->(%p)\n", This
, iface
, pTop
);
490 GetWindowRect(This
->baseWindow
.hWnd
, &WindowPos
);
492 *pTop
= WindowPos
.top
;
497 HRESULT WINAPI
BaseControlWindowImpl_put_Height(IVideoWindow
*iface
, LONG Height
)
499 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
501 TRACE("(%p/%p)->(%d)\n", This
, iface
, Height
);
503 if (!SetWindowPos(This
->baseWindow
.hWnd
, NULL
, 0, 0, This
->baseWindow
.Width
, Height
, SWP_NOZORDER
|SWP_NOMOVE
))
506 This
->baseWindow
.Height
= Height
;
511 HRESULT WINAPI
BaseControlWindowImpl_get_Height(IVideoWindow
*iface
, LONG
*pHeight
)
513 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
515 TRACE("(%p/%p)->(%p)\n", This
, iface
, pHeight
);
517 *pHeight
= This
->baseWindow
.Height
;
522 HRESULT WINAPI
BaseControlWindowImpl_put_Owner(IVideoWindow
*iface
, OAHWND Owner
)
524 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
526 TRACE("(%p/%p)->(%08x)\n", This
, iface
, (DWORD
) Owner
);
528 This
->hwndOwner
= (HWND
)Owner
;
529 SetParent(This
->baseWindow
.hWnd
, This
->hwndOwner
);
534 HRESULT WINAPI
BaseControlWindowImpl_get_Owner(IVideoWindow
*iface
, OAHWND
*Owner
)
536 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
538 TRACE("(%p/%p)->(%p)\n", This
, iface
, Owner
);
540 *(HWND
*)Owner
= This
->hwndOwner
;
545 HRESULT WINAPI
BaseControlWindowImpl_put_MessageDrain(IVideoWindow
*iface
, OAHWND Drain
)
547 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
549 TRACE("(%p/%p)->(%08x)\n", This
, iface
, (DWORD
) Drain
);
551 This
->hwndDrain
= (HWND
)Drain
;
556 HRESULT WINAPI
BaseControlWindowImpl_get_MessageDrain(IVideoWindow
*iface
, OAHWND
*Drain
)
558 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
560 TRACE("(%p/%p)->(%p)\n", This
, iface
, Drain
);
562 *Drain
= (OAHWND
)This
->hwndDrain
;
567 HRESULT WINAPI
BaseControlWindowImpl_get_BorderColor(IVideoWindow
*iface
, LONG
*Color
)
569 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
571 FIXME("(%p/%p)->(%p): stub !!!\n", This
, iface
, Color
);
576 HRESULT WINAPI
BaseControlWindowImpl_put_BorderColor(IVideoWindow
*iface
, LONG Color
)
578 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
580 FIXME("(%p/%p)->(%d): stub !!!\n", This
, iface
, Color
);
585 HRESULT WINAPI
BaseControlWindowImpl_get_FullScreenMode(IVideoWindow
*iface
, LONG
*FullScreenMode
)
587 TRACE("(%p)->(%p)\n", iface
, FullScreenMode
);
592 HRESULT WINAPI
BaseControlWindowImpl_put_FullScreenMode(IVideoWindow
*iface
, LONG FullScreenMode
)
594 TRACE("(%p)->(%d)\n", iface
, FullScreenMode
);
598 HRESULT WINAPI
BaseControlWindowImpl_SetWindowForeground(IVideoWindow
*iface
, LONG Focus
)
600 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
605 TRACE("(%p/%p)->(%d)\n", This
, iface
, Focus
);
607 if ((Focus
!= FALSE
) && (Focus
!= TRUE
))
610 hr
= IPin_ConnectedTo(&This
->pPin
->IPin_iface
, &pPin
);
611 if ((hr
!= S_OK
) || !pPin
)
612 return VFW_E_NOT_CONNECTED
;
615 ret
= SetForegroundWindow(This
->baseWindow
.hWnd
);
617 ret
= SetWindowPos(This
->baseWindow
.hWnd
, HWND_TOP
, 0, 0, 0, 0, SWP_NOMOVE
|SWP_NOSIZE
);
625 HRESULT WINAPI
BaseControlWindowImpl_SetWindowPosition(IVideoWindow
*iface
, LONG Left
, LONG Top
, LONG Width
, LONG Height
)
627 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
629 TRACE("(%p/%p)->(%d, %d, %d, %d)\n", This
, iface
, Left
, Top
, Width
, Height
);
631 if (!SetWindowPos(This
->baseWindow
.hWnd
, NULL
, Left
, Top
, Width
, Height
, SWP_NOZORDER
))
634 This
->baseWindow
.Width
= Width
;
635 This
->baseWindow
.Height
= Height
;
640 HRESULT WINAPI
BaseControlWindowImpl_GetWindowPosition(IVideoWindow
*iface
, LONG
*pLeft
, LONG
*pTop
, LONG
*pWidth
, LONG
*pHeight
)
642 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
645 TRACE("(%p/%p)->(%p, %p, %p, %p)\n", This
, iface
, pLeft
, pTop
, pWidth
, pHeight
);
646 GetWindowRect(This
->baseWindow
.hWnd
, &WindowPos
);
648 *pLeft
= WindowPos
.left
;
649 *pTop
= WindowPos
.top
;
650 *pWidth
= This
->baseWindow
.Width
;
651 *pHeight
= This
->baseWindow
.Height
;
656 HRESULT WINAPI
BaseControlWindowImpl_NotifyOwnerMessage(IVideoWindow
*iface
, OAHWND hwnd
, LONG uMsg
, LONG_PTR wParam
, LONG_PTR lParam
)
658 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
660 TRACE("(%p/%p)->(%08lx, %d, %08lx, %08lx)\n", This
, iface
, hwnd
, uMsg
, wParam
, lParam
);
662 if (!PostMessageW(This
->baseWindow
.hWnd
, uMsg
, wParam
, lParam
))
668 HRESULT WINAPI
BaseControlWindowImpl_GetMinIdealImageSize(IVideoWindow
*iface
, LONG
*pWidth
, LONG
*pHeight
)
670 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
673 TRACE("(%p/%p)->(%p, %p)\n", This
, iface
, pWidth
, pHeight
);
674 defaultRect
= This
->baseWindow
.pFuncsTable
->pfnGetDefaultRect(&This
->baseWindow
);
676 *pWidth
= defaultRect
.right
- defaultRect
.left
;
677 *pHeight
= defaultRect
.bottom
- defaultRect
.top
;
682 HRESULT WINAPI
BaseControlWindowImpl_GetMaxIdealImageSize(IVideoWindow
*iface
, LONG
*pWidth
, LONG
*pHeight
)
684 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
687 TRACE("(%p/%p)->(%p, %p)\n", This
, iface
, pWidth
, pHeight
);
688 defaultRect
= This
->baseWindow
.pFuncsTable
->pfnGetDefaultRect(&This
->baseWindow
);
690 *pWidth
= defaultRect
.right
- defaultRect
.left
;
691 *pHeight
= defaultRect
.bottom
- defaultRect
.top
;
696 HRESULT WINAPI
BaseControlWindowImpl_GetRestorePosition(IVideoWindow
*iface
, LONG
*pLeft
, LONG
*pTop
, LONG
*pWidth
, LONG
*pHeight
)
698 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
700 FIXME("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This
, iface
, pLeft
, pTop
, pWidth
, pHeight
);
705 HRESULT WINAPI
BaseControlWindowImpl_HideCursor(IVideoWindow
*iface
, LONG HideCursor
)
707 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
709 FIXME("(%p/%p)->(%d): stub !!!\n", This
, iface
, HideCursor
);
714 HRESULT WINAPI
BaseControlWindowImpl_IsCursorHidden(IVideoWindow
*iface
, LONG
*CursorHidden
)
716 BaseControlWindow
* This
= impl_from_IVideoWindow(iface
);
718 FIXME("(%p/%p)->(%p): stub !!!\n", This
, iface
, CursorHidden
);