ReactOS 0.4.17-dev-923-g4c9a150
window.c
Go to the documentation of this file.
1/*
2 * Common implementation of IVideoWindow
3 *
4 * Copyright 2012 Aric Stewart, CodeWeavers
5 *
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.
10 *
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.
15 *
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
19 */
20
21#include "quartz_private.h"
22
23#define WM_QUARTZ_DESTROY (WM_USER + WM_DESTROY)
24
26
27static const WCHAR class_name[] = L"wine_quartz_window";
28
29static inline struct video_window *impl_from_IVideoWindow(IVideoWindow *iface)
30{
32}
33
35{
37
38 if (!window)
40
41 switch (message)
42 {
43 case WM_KEYDOWN:
44 case WM_KEYUP:
46 case WM_LBUTTONDOWN:
47 case WM_LBUTTONUP:
49 case WM_MBUTTONDOWN:
50 case WM_MBUTTONUP:
52 case WM_MOUSEMOVE:
55 case WM_NCLBUTTONUP:
58 case WM_NCMBUTTONUP:
59 case WM_NCMOUSEMOVE:
62 case WM_NCRBUTTONUP:
64 case WM_RBUTTONDOWN:
65 case WM_RBUTTONUP:
66 if (window->hwndDrain)
67 {
69 return 0;
70 }
71 break;
72 case WM_SIZE:
73 if (window->default_dst)
74 GetClientRect(window->hwnd, &window->dst);
75 break;
78 return 0;
79 case WM_CLOSE:
80 {
81 IFilterGraph *graph = window->pFilter->graph;
82 IMediaEventSink *event_sink;
83 IVideoWindow_put_Visible(&window->IVideoWindow_iface, OAFALSE);
84 if (graph && SUCCEEDED(IFilterGraph_QueryInterface(graph,
85 &IID_IMediaEventSink,
86 (void **)&event_sink)))
87 {
88 IMediaEventSink_Notify(event_sink, EC_USERABORT, 0, 0);
89 IMediaEventSink_Release(event_sink);
90 }
91 return 0;
92 }
93 }
94
96}
97
99{
100 WNDCLASSW winclass = {0};
101
102 winclass.lpfnWndProc = WndProcW;
103 winclass.cbWndExtra = sizeof(window);
104 winclass.lpszClassName = class_name;
106 {
107 ERR("Failed to register class, error %lu.\n", GetLastError());
108 return E_FAIL;
109 }
110
111 if (!(window->hwnd = CreateWindowExW(0, class_name, L"ActiveMovie Window",
114 NULL, NULL, NULL, NULL)))
115 {
116 ERR("Unable to create window\n");
117 return E_FAIL;
118 }
119
121
122 return S_OK;
123}
124
126{
128 return IUnknown_QueryInterface(window->pFilter->outer_unk, iid, out);
129}
130
132{
134 return IUnknown_AddRef(window->pFilter->outer_unk);
135}
136
138{
140 return IUnknown_Release(window->pFilter->outer_unk);
141}
142
144{
145 TRACE("iface %p, count %p.\n", iface, count);
146 *count = 1;
147 return S_OK;
148}
149
152{
153 TRACE("iface %p, index %u, lcid %#lx, typeinfo %p.\n", iface, index, lcid, typeinfo);
155}
156
158 LPOLESTR *names, UINT count, LCID lcid, DISPID *ids)
159{
161 HRESULT hr;
162
163 TRACE("iface %p, iid %s, names %p, count %u, lcid %#lx, ids %p.\n",
164 iface, debugstr_guid(iid), names, count, lcid, ids);
165
167 {
168 hr = ITypeInfo_GetIDsOfNames(typeinfo, names, count, ids);
169 ITypeInfo_Release(typeinfo);
170 }
171 return hr;
172}
173
175 WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *error_arg)
176{
178 HRESULT hr;
179
180 TRACE("iface %p, id %ld, iid %s, lcid %#lx, flags %#x, params %p, result %p, excepinfo %p, error_arg %p.\n",
181 iface, id, debugstr_guid(iid), lcid, flags, params, result, excepinfo, error_arg);
182
184 {
185 hr = ITypeInfo_Invoke(typeinfo, iface, id, flags, params, result, excepinfo, error_arg);
186 ITypeInfo_Release(typeinfo);
187 }
188 return hr;
189}
190
192{
194
195 TRACE("window %p, caption %s.\n", window, debugstr_w(caption));
196
197 if (!window->pPin->peer)
198 return VFW_E_NOT_CONNECTED;
199
200 if (!SetWindowTextW(window->hwnd, caption))
201 return E_FAIL;
202
203 return S_OK;
204}
205
207{
209 WCHAR *str;
210 int len;
211
212 TRACE("window %p, caption %p.\n", window, caption);
213
214 *caption = NULL;
215
216 len = GetWindowTextLengthW(window->hwnd) + 1;
217 if (!(str = heap_alloc(len * sizeof(WCHAR))))
218 return E_OUTOFMEMORY;
219
220 GetWindowTextW(window->hwnd, str, len);
221 *caption = SysAllocString(str);
222 heap_free(str);
223 return *caption ? S_OK : E_OUTOFMEMORY;
224}
225
227{
229
230 TRACE("window %p, style %#lx.\n", window, style);
231
233 return E_INVALIDARG;
234 if (!window->pPin->peer)
235 return VFW_E_NOT_CONNECTED;
236
238 SetWindowPos(window->hwnd, 0, 0, 0, 0, 0,
240 return S_OK;
241}
242
244{
246
247 TRACE("window %p, style %p.\n", window, style);
248
250 return S_OK;
251}
252
254{
256
257 TRACE("window %p, style %#lx.\n", window, style);
258
260 return E_FAIL;
261 return S_OK;
262}
263
265{
267
268 TRACE("window %p, style %p.\n", window, style);
269
271 return S_OK;
272}
273
275{
277
278 TRACE("window %p, AutoShow %ld.\n", window, AutoShow);
279
280 if (!window->pPin->peer)
281 return VFW_E_NOT_CONNECTED;
282
283 window->AutoShow = AutoShow;
284
285 return S_OK;
286}
287
289{
291
292 TRACE("(%p/%p)->(%p)\n", This, iface, AutoShow);
293
294 *AutoShow = This->AutoShow;
295
296 return S_OK;
297}
298
300{
302
303 TRACE("window %p, state %ld.\n", window, state);
304
305 ShowWindow(window->hwnd, state);
306 return S_OK;
307}
308
310{
312 DWORD style;
313
314 TRACE("window %p, state %p.\n", window, state);
315
317 if (!(style & WS_VISIBLE))
318 *state = SW_HIDE;
319 else if (style & WS_MINIMIZE)
321 else if (style & WS_MAXIMIZE)
323 else
324 *state = SW_SHOW;
325
326 return S_OK;
327}
328
329HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow *iface, LONG BackgroundPalette)
330{
332
333 FIXME("window %p, palette %ld, stub!\n", This, BackgroundPalette);
334
335 return S_OK;
336}
337
338HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow *iface, LONG *pBackgroundPalette)
339{
341
342 FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, pBackgroundPalette);
343
344 return S_OK;
345}
346
348{
350
351 TRACE("window %p, visible %ld.\n", window, visible);
352
353 if (!window->pPin->peer)
354 return VFW_E_NOT_CONNECTED;
355
356 ShowWindow(window->hwnd, visible ? SW_SHOW : SW_HIDE);
357 return S_OK;
358}
359
361{
363
364 TRACE("window %p, visible %p.\n", window, visible);
365
366 if (!visible)
367 return E_POINTER;
368
369 *visible = IsWindowVisible(window->hwnd) ? OATRUE : OAFALSE;
370 return S_OK;
371}
372
374{
376 RECT rect;
377
378 TRACE("window %p, left %ld.\n", window, left);
379
380 GetWindowRect(window->hwnd, &rect);
381 if (!SetWindowPos(window->hwnd, NULL, left, rect.top, 0, 0,
383 return E_FAIL;
384
385 return S_OK;
386}
387
389{
391 RECT rect;
392
393 TRACE("window %p, left %p.\n", window, left);
394
395 GetWindowRect(window->hwnd, &rect);
396 *left = rect.left;
397 return S_OK;
398}
399
401{
403 RECT rect;
404
405 TRACE("window %p, width %ld.\n", window, width);
406
407 GetWindowRect(window->hwnd, &rect);
408 if (!SetWindowPos(window->hwnd, NULL, 0, 0, width, rect.bottom - rect.top,
410 return E_FAIL;
411
412 return S_OK;
413}
414
416{
418 RECT rect;
419
420 TRACE("window %p, width %p.\n", window, width);
421
422 GetWindowRect(window->hwnd, &rect);
423 *width = rect.right - rect.left;
424 return S_OK;
425}
426
428{
430 RECT rect;
431
432 TRACE("window %p, top %ld.\n", window, top);
433
434 GetWindowRect(window->hwnd, &rect);
435 if (!SetWindowPos(window->hwnd, NULL, rect.left, top, 0, 0,
437 return E_FAIL;
438
439 return S_OK;
440}
441
443{
445 RECT rect;
446
447 TRACE("window %p, top %p.\n", window, top);
448
449 GetWindowRect(window->hwnd, &rect);
450 *top = rect.top;
451 return S_OK;
452}
453
455{
457 RECT rect;
458
459 TRACE("window %p, height %ld.\n", window, height);
460
461 GetWindowRect(window->hwnd, &rect);
462 if (!SetWindowPos(window->hwnd, NULL, 0, 0, rect.right - rect.left,
464 return E_FAIL;
465
466 return S_OK;
467}
468
470{
472 RECT rect;
473
474 TRACE("window %p, height %p.\n", window, height);
475
476 GetWindowRect(window->hwnd, &rect);
478 return S_OK;
479}
480
481HRESULT WINAPI BaseControlWindowImpl_put_Owner(IVideoWindow *iface, OAHWND owner)
482{
484 HWND hwnd = window->hwnd;
485
486 TRACE("window %p, owner %#Ix.\n", window, owner);
487
488 if (!window->pPin->peer)
489 return VFW_E_NOT_CONNECTED;
490
491 /* Make sure we are marked as WS_CHILD before reparenting ourselves, so that
492 * we do not steal focus. LEGO Island depends on this. */
493
494 window->hwndOwner = (HWND)owner;
495 if (owner)
497 else
499 SetParent(hwnd, (HWND)owner);
500
501 return S_OK;
502}
503
505{
507
508 TRACE("(%p/%p)->(%p)\n", This, iface, Owner);
509
510 *(HWND*)Owner = This->hwndOwner;
511
512 return S_OK;
513}
514
515HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain(IVideoWindow *iface, OAHWND Drain)
516{
518
519 TRACE("window %p, drain %#Ix.\n", window, Drain);
520
521 if (!window->pPin->peer)
522 return VFW_E_NOT_CONNECTED;
523
524 window->hwndDrain = (HWND)Drain;
525
526 return S_OK;
527}
528
529HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain(IVideoWindow *iface, OAHWND *Drain)
530{
532
533 TRACE("(%p/%p)->(%p)\n", This, iface, Drain);
534
535 *Drain = (OAHWND)This->hwndDrain;
536
537 return S_OK;
538}
539
541{
543
544 FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, Color);
545
546 return S_OK;
547}
548
550{
552
553 TRACE("window %p, colour %#lx.\n", This, Color);
554
555 return S_OK;
556}
557
558HRESULT WINAPI BaseControlWindowImpl_get_FullScreenMode(IVideoWindow *iface, LONG *FullScreenMode)
559{
560 TRACE("(%p)->(%p)\n", iface, FullScreenMode);
561
562 return E_NOTIMPL;
563}
564
566{
568
569 TRACE("window %p, fullscreen %ld.\n", window, fullscreen);
570
571 return E_NOTIMPL;
572}
573
575{
578
579 TRACE("window %p, focus %ld.\n", window, focus);
580
581 if (focus != OAFALSE && focus != OATRUE)
582 return E_INVALIDARG;
583
584 if (!window->pPin->peer)
585 return VFW_E_NOT_CONNECTED;
586
587 if (!focus)
589 SetWindowPos(window->hwnd, HWND_TOP, 0, 0, 0, 0, flags);
590
591 return S_OK;
592}
593
596{
598
599 TRACE("window %p, left %ld, top %ld, width %ld, height %ld.\n", window, left, top, width, height);
600
601 if (!window->pPin->peer)
602 return VFW_E_NOT_CONNECTED;
603
605 return E_FAIL;
606 return S_OK;
607}
608
611{
613 RECT rect;
614
615 TRACE("window %p, left %p, top %p, width %p, height %p.\n", window, left, top, width, height);
616
617 GetWindowRect(window->hwnd, &rect);
618 *left = rect.left;
619 *top = rect.top;
620 *width = rect.right - rect.left;
622 return S_OK;
623}
624
627{
629
630 TRACE("window %p, hwnd %#Ix, message %#lx, wparam %#Ix, lparam %#Ix.\n",
632
633 /* That these messages are forwarded, and no others, is stated by the
634 * DirectX documentation, and supported by manual testing. */
635 switch (message)
636 {
637 case WM_ACTIVATEAPP:
638 case WM_DEVMODECHANGE:
639 case WM_DISPLAYCHANGE:
645 break;
646 }
647
648 return S_OK;
649}
650
652{
654 RECT rect;
655
656 TRACE("window %p, width %p, height %p.\n", window, width, height);
657
658 window->ops->get_default_rect(window, &rect);
659 *width = rect.right - rect.left;
661 return S_OK;
662}
663
665{
667 RECT rect;
668
669 TRACE("window %p, width %p, height %p.\n", window, width, height);
670
671 window->ops->get_default_rect(window, &rect);
672 *width = rect.right - rect.left;
674 return S_OK;
675}
676
677HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
678{
680
681 FIXME("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
682
683 return S_OK;
684}
685
687{
689
690 FIXME("window %p, hide %ld, stub!\n", window, hide);
691
692 return S_OK;
693}
694
695HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *CursorHidden)
696{
698
699 FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, CursorHidden);
700
701 return S_OK;
702}
703
704static inline struct video_window *impl_from_IBasicVideo(IBasicVideo *iface)
705{
706 return CONTAINING_RECORD(iface, struct video_window, IBasicVideo_iface);
707}
708
709static HRESULT WINAPI basic_video_QueryInterface(IBasicVideo *iface, REFIID iid, void **out)
710{
712 return IUnknown_QueryInterface(window->pFilter->outer_unk, iid, out);
713}
714
715static ULONG WINAPI basic_video_AddRef(IBasicVideo *iface)
716{
718 return IUnknown_AddRef(window->pFilter->outer_unk);
719}
720
721static ULONG WINAPI basic_video_Release(IBasicVideo *iface)
722{
724 return IUnknown_Release(window->pFilter->outer_unk);
725}
726
728{
729 TRACE("iface %p, count %p.\n", iface, count);
730 *count = 1;
731 return S_OK;
732}
733
736{
737 TRACE("iface %p, index %u, lcid %#lx, typeinfo %p.\n", iface, index, lcid, typeinfo);
739}
740
741static HRESULT WINAPI basic_video_GetIDsOfNames(IBasicVideo *iface, REFIID iid,
742 LPOLESTR *names, UINT count, LCID lcid, DISPID *ids)
743{
745 HRESULT hr;
746
747 TRACE("iface %p, iid %s, names %p, count %u, lcid %#lx, ids %p.\n",
748 iface, debugstr_guid(iid), names, count, lcid, ids);
749
751 {
752 hr = ITypeInfo_GetIDsOfNames(typeinfo, names, count, ids);
753 ITypeInfo_Release(typeinfo);
754 }
755 return hr;
756}
757
758static HRESULT WINAPI basic_video_Invoke(IBasicVideo *iface, DISPID id, REFIID iid, LCID lcid,
759 WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *error_arg)
760{
762 HRESULT hr;
763
764 TRACE("iface %p, id %ld, iid %s, lcid %#lx, flags %#x, params %p, result %p, excepinfo %p, error_arg %p.\n",
765 iface, id, debugstr_guid(iid), lcid, flags, params, result, excepinfo, error_arg);
766
768 {
769 hr = ITypeInfo_Invoke(typeinfo, iface, id, flags, params, result, excepinfo, error_arg);
770 ITypeInfo_Release(typeinfo);
771 }
772 return hr;
773}
774
776{
777 /* Members of VIDEOINFOHEADER up to bmiHeader are identical to those of
778 * VIDEOINFOHEADER2. */
779 return (const VIDEOINFOHEADER *)window->pPin->mt.pbFormat;
780}
781
783{
784 const AM_MEDIA_TYPE *mt = &window->pPin->mt;
785 if (IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo))
786 return &((VIDEOINFOHEADER *)mt->pbFormat)->bmiHeader;
787 else
788 return &((VIDEOINFOHEADER2 *)mt->pbFormat)->bmiHeader;
789}
790
791static HRESULT WINAPI basic_video_get_AvgTimePerFrame(IBasicVideo *iface, REFTIME *reftime)
792{
794
795 if (!reftime)
796 return E_POINTER;
797 if (!window->pPin->peer)
798 return VFW_E_NOT_CONNECTED;
799
800 TRACE("window %p, reftime %p.\n", window, reftime);
801
802 *reftime = (double)get_video_format(window)->AvgTimePerFrame / 1e7;
803 return S_OK;
804}
805
806static HRESULT WINAPI basic_video_get_BitRate(IBasicVideo *iface, LONG *rate)
807{
809
810 TRACE("window %p, rate %p.\n", window, rate);
811
812 if (!rate)
813 return E_POINTER;
814 if (!window->pPin->peer)
815 return VFW_E_NOT_CONNECTED;
816
818 return S_OK;
819}
820
822{
824
825 TRACE("window %p, rate %p.\n", window, rate);
826
827 if (!rate)
828 return E_POINTER;
829 if (!window->pPin->peer)
830 return VFW_E_NOT_CONNECTED;
831
833 return S_OK;
834}
835
837{
839
840 TRACE("window %p, width %p.\n", window, width);
841
842 if (!width)
843 return E_POINTER;
844
846
847 return S_OK;
848}
849
851{
853
854 TRACE("window %p, height %p.\n", window, height);
855
856 if (!height)
857 return E_POINTER;
858
859 *height = abs(get_bitmap_header(window)->biHeight);
860
861 return S_OK;
862}
863
865{
867
868 TRACE("window %p, left %ld.\n", window, left);
869
870 if (left < 0 || window->src.right + left - window->src.left > get_bitmap_header(window)->biWidth)
871 return E_INVALIDARG;
872
873 OffsetRect(&window->src, left - window->src.left, 0);
874 return S_OK;
875}
876
878{
880
881 TRACE("window %p, left %p.\n", window, left);
882
883 if (!left)
884 return E_POINTER;
885
886 *left = window->src.left;
887 return S_OK;
888}
889
891{
893
894 TRACE("window %p, width %ld.\n", window, width);
895
896 if (width <= 0 || window->src.left + width > get_bitmap_header(window)->biWidth)
897 return E_INVALIDARG;
898
899 window->src.right = window->src.left + width;
900 return S_OK;
901}
902
904{
906
907 TRACE("window %p, width %p.\n", window, width);
908
909 if (!width)
910 return E_POINTER;
911
912 *width = window->src.right - window->src.left;
913 return S_OK;
914}
915
917{
919
920 TRACE("window %p, top %ld.\n", window, top);
921
922 if (top < 0 || window->src.bottom + top - window->src.top > get_bitmap_header(window)->biHeight)
923 return E_INVALIDARG;
924
925 OffsetRect(&window->src, 0, top - window->src.top);
926 return S_OK;
927}
928
929static HRESULT WINAPI basic_video_get_SourceTop(IBasicVideo *iface, LONG *top)
930{
932
933 TRACE("window %p, top %p.\n", window, top);
934
935 if (!top)
936 return E_POINTER;
937
938 *top = window->src.top;
939 return S_OK;
940}
941
943{
945
946 TRACE("window %p, height %ld.\n", window, height);
947
948 if (height <= 0 || window->src.top + height > get_bitmap_header(window)->biHeight)
949 return E_INVALIDARG;
950
951 window->src.bottom = window->src.top + height;
952 return S_OK;
953}
954
956{
958
959 TRACE("window %p, height %p\n", window, height);
960
961 if (!height)
962 return E_POINTER;
963
964 *height = window->src.bottom - window->src.top;
965 return S_OK;
966}
967
969{
971
972 TRACE("window %p, left %ld.\n", window, left);
973
974 window->default_dst = FALSE;
975 OffsetRect(&window->dst, left - window->dst.left, 0);
976 return S_OK;
977}
978
980{
982
983 TRACE("window %p, left %p.\n", window, left);
984
985 if (!left)
986 return E_POINTER;
987
988 *left = window->dst.left;
989 return S_OK;
990}
991
993{
995
996 TRACE("window %p, width %ld.\n", window, width);
997
998 if (width <= 0)
999 return E_INVALIDARG;
1000
1001 window->default_dst = FALSE;
1002 window->dst.right = window->dst.left + width;
1003 return S_OK;
1004}
1005
1007{
1008 struct video_window *window = impl_from_IBasicVideo(iface);
1009
1010 TRACE("window %p, width %p.\n", window, width);
1011
1012 if (!width)
1013 return E_POINTER;
1014
1015 *width = window->dst.right - window->dst.left;
1016 return S_OK;
1017}
1018
1020{
1021 struct video_window *window = impl_from_IBasicVideo(iface);
1022
1023 TRACE("window %p, top %ld.\n", window, top);
1024
1025 window->default_dst = FALSE;
1026 OffsetRect(&window->dst, 0, top - window->dst.top);
1027 return S_OK;
1028}
1029
1031{
1032 struct video_window *window = impl_from_IBasicVideo(iface);
1033
1034 TRACE("window %p, top %p.\n", window, top);
1035
1036 if (!top)
1037 return E_POINTER;
1038
1039 *top = window->dst.top;
1040 return S_OK;
1041}
1042
1044{
1045 struct video_window *window = impl_from_IBasicVideo(iface);
1046
1047 TRACE("window %p, height %ld.\n", window, height);
1048
1049 if (height <= 0)
1050 return E_INVALIDARG;
1051
1052 window->default_dst = FALSE;
1053 window->dst.bottom = window->dst.top + height;
1054 return S_OK;
1055}
1056
1058{
1059 struct video_window *window = impl_from_IBasicVideo(iface);
1060
1061 TRACE("window %p, height %p.\n", window, height);
1062
1063 if (!height)
1064 return E_POINTER;
1065
1066 *height = window->dst.bottom - window->dst.top;
1067 return S_OK;
1068}
1069
1072{
1073 struct video_window *window = impl_from_IBasicVideo(iface);
1074 const BITMAPINFOHEADER *bitmap_header = get_bitmap_header(window);
1075
1076 TRACE("window %p, left %ld, top %ld, width %ld, height %ld.\n", window, left, top, width, height);
1077
1078 if (left < 0 || left + width > bitmap_header->biWidth || width <= 0)
1079 return E_INVALIDARG;
1080 if (top < 0 || top + height > bitmap_header->biHeight || height <= 0)
1081 return E_INVALIDARG;
1082
1083 SetRect(&window->src, left, top, left + width, top + height);
1084 return S_OK;
1085}
1086
1089{
1090 struct video_window *window = impl_from_IBasicVideo(iface);
1091
1092 TRACE("window %p, left %p, top %p, width %p, height %p.\n", window, left, top, width, height);
1093
1094 if (!left || !top || !width || !height)
1095 return E_POINTER;
1096
1097 *left = window->src.left;
1098 *top = window->src.top;
1099 *width = window->src.right - window->src.left;
1100 *height = window->src.bottom - window->src.top;
1101 return S_OK;
1102}
1103
1105{
1106 struct video_window *window = impl_from_IBasicVideo(iface);
1107 const BITMAPINFOHEADER *bitmap_header = get_bitmap_header(window);
1108
1109 TRACE("window %p.\n", window);
1110
1111 SetRect(&window->src, 0, 0, bitmap_header->biWidth, bitmap_header->biHeight);
1112 return S_OK;
1113}
1114
1117{
1118 struct video_window *window = impl_from_IBasicVideo(iface);
1119
1120 TRACE("window %p, left %ld, top %ld, width %ld, height %ld.\n", window, left, top, width, height);
1121
1122 if (width <= 0 || height <= 0)
1123 return E_INVALIDARG;
1124
1125 window->default_dst = FALSE;
1126 SetRect(&window->dst, left, top, left + width, top + height);
1127 return S_OK;
1128}
1129
1132{
1133 struct video_window *window = impl_from_IBasicVideo(iface);
1134
1135 TRACE("window %p, left %p, top %p, width %p, height %p.\n", window, left, top, width, height);
1136
1137 if (!left || !top || !width || !height)
1138 return E_POINTER;
1139
1140 *left = window->dst.left;
1141 *top = window->dst.top;
1142 *width = window->dst.right - window->dst.left;
1143 *height = window->dst.bottom - window->dst.top;
1144 return S_OK;
1145}
1146
1148{
1149 struct video_window *window = impl_from_IBasicVideo(iface);
1150
1151 TRACE("window %p.\n", window);
1152
1153 window->default_dst = TRUE;
1154 GetClientRect(window->hwnd, &window->dst);
1155 return S_OK;
1156}
1157
1159{
1160 struct video_window *window = impl_from_IBasicVideo(iface);
1161 const BITMAPINFOHEADER *bitmap_header;
1162
1163 TRACE("window %p, width %p, height %p.\n", window, width, height);
1164
1165 if (!width || !height)
1166 return E_POINTER;
1167 if (!window->pPin->peer)
1168 return VFW_E_NOT_CONNECTED;
1169
1170 bitmap_header = get_bitmap_header(window);
1171 *width = bitmap_header->biWidth;
1172 *height = bitmap_header->biHeight;
1173 return S_OK;
1174}
1175
1177 LONG start, LONG count, LONG *ret_count, LONG *palette)
1178{
1179 struct video_window *window = impl_from_IBasicVideo(iface);
1180
1181 FIXME("window %p, start %ld, count %ld, ret_count %p, palette %p, stub!\n",
1182 window, start, count, ret_count, palette);
1183
1184 if (!ret_count || !palette)
1185 return E_POINTER;
1186
1187 *ret_count = 0;
1189}
1190
1192{
1193 struct video_window *window = impl_from_IBasicVideo(iface);
1194
1195 TRACE("window %p, size %p, image %p.\n", window, size, image);
1196
1197 if (!size || !image)
1198 return E_POINTER;
1199
1200 return window->ops->get_current_image(window, size, image);
1201}
1202
1204{
1205 struct video_window *window = impl_from_IBasicVideo(iface);
1206 const BITMAPINFOHEADER *bitmap_header = get_bitmap_header(window);
1207
1208 TRACE("window %p.\n", window);
1209
1210 if (!window->src.left && !window->src.top
1211 && window->src.right == bitmap_header->biWidth
1212 && window->src.bottom == bitmap_header->biHeight)
1213 return S_OK;
1214 return S_FALSE;
1215}
1216
1218{
1219 struct video_window *window = impl_from_IBasicVideo(iface);
1220
1221 TRACE("window %p.\n", window);
1222
1223 return window->default_dst ? S_OK : S_FALSE;
1224}
1225
1226static const IBasicVideoVtbl basic_video_vtbl =
1227{
1267};
1268
1270{
1272 ERR("Failed to unregister class, error %lu.\n", GetLastError());
1273}
1274
1275void video_window_init(struct video_window *window, const IVideoWindowVtbl *vtbl,
1276 struct strmbase_filter *owner, struct strmbase_pin *pin, const struct video_window_ops *ops)
1277{
1278 memset(window, 0, sizeof(*window));
1279 window->ops = ops;
1280 window->IVideoWindow_iface.lpVtbl = vtbl;
1281 window->IBasicVideo_iface.lpVtbl = &basic_video_vtbl;
1282 window->default_dst = TRUE;
1283 window->AutoShow = OATRUE;
1284 window->pFilter = owner;
1285 window->pPin = pin;
1286}
1287
1289{
1290 if (window->hwnd)
1291 {
1292 /* Media Player Classic deadlocks if WM_PARENTNOTIFY is sent, so clear
1293 * the child style first. Just like Windows, we don't actually unparent
1294 * the window, to prevent extra focus events from being generated since
1295 * it would become top-level for a brief period before being destroyed. */
1297
1299 window->hwnd = NULL;
1300 }
1301}
BOOL fullscreen
Definition: 3dtext.c:44
@ lparam
Definition: SystemMenu.c:31
@ wparam
Definition: SystemMenu.c:30
static int state
Definition: maze.c:121
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
unsigned int rate
Definition: audiorecord.c:87
DOUBLE REFTIME
Definition: axcore.idl:57
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define ERR(fmt,...)
Definition: precomp.h:57
RECT rect
Definition: combotst.c:67
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static HRESULT WINAPI basic_video_put_DestinationHeight(IBasicVideo *iface, LONG height)
Definition: window.c:1043
static HRESULT WINAPI basic_video_get_SourceTop(IBasicVideo *iface, LONG *top)
Definition: window.c:929
ULONG WINAPI BaseControlWindowImpl_AddRef(IVideoWindow *iface)
Definition: window.c:131
HRESULT WINAPI BaseControlWindowImpl_put_Owner(IVideoWindow *iface, OAHWND owner)
Definition: window.c:481
static HRESULT WINAPI basic_video_get_BitRate(IBasicVideo *iface, LONG *rate)
Definition: window.c:806
HRESULT WINAPI BaseControlWindowImpl_put_FullScreenMode(IVideoWindow *iface, LONG fullscreen)
Definition: window.c:565
HRESULT WINAPI BaseControlWindowImpl_get_Caption(IVideoWindow *iface, BSTR *caption)
Definition: window.c:206
static HRESULT WINAPI basic_video_get_BitErrorRate(IBasicVideo *iface, LONG *rate)
Definition: window.c:821
static HRESULT WINAPI basic_video_get_VideoWidth(IBasicVideo *iface, LONG *width)
Definition: window.c:836
ULONG WINAPI BaseControlWindowImpl_Release(IVideoWindow *iface)
Definition: window.c:137
HRESULT WINAPI BaseControlWindowImpl_HideCursor(IVideoWindow *iface, LONG hide)
Definition: window.c:686
static ULONG WINAPI basic_video_AddRef(IBasicVideo *iface)
Definition: window.c:715
static const IBasicVideoVtbl basic_video_vtbl
Definition: window.c:1226
HRESULT WINAPI BaseControlWindowImpl_GetMaxIdealImageSize(IVideoWindow *iface, LONG *width, LONG *height)
Definition: window.c:664
static HRESULT WINAPI basic_video_get_DestinationTop(IBasicVideo *iface, LONG *top)
Definition: window.c:1030
static HRESULT WINAPI basic_video_get_AvgTimePerFrame(IBasicVideo *iface, REFTIME *reftime)
Definition: window.c:791
static HRESULT WINAPI basic_video_GetTypeInfoCount(IBasicVideo *iface, UINT *count)
Definition: window.c:727
static HRESULT WINAPI basic_video_GetCurrentImage(IBasicVideo *iface, LONG *size, LONG *image)
Definition: window.c:1191
static struct video_window * impl_from_IVideoWindow(IVideoWindow *iface)
Definition: window.c:29
HRESULT WINAPI BaseControlWindowImpl_get_FullScreenMode(IVideoWindow *iface, LONG *FullScreenMode)
Definition: window.c:558
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyle(IVideoWindow *iface, LONG style)
Definition: window.c:226
static const BITMAPINFOHEADER * get_bitmap_header(struct video_window *window)
Definition: window.c:782
static HRESULT WINAPI basic_video_put_DestinationTop(IBasicVideo *iface, LONG top)
Definition: window.c:1019
static const WCHAR class_name[]
Definition: window.c:27
static HRESULT WINAPI basic_video_put_DestinationWidth(IBasicVideo *iface, LONG width)
Definition: window.c:992
HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition(IVideoWindow *iface, LONG left, LONG top, LONG width, LONG height)
Definition: window.c:594
HRESULT WINAPI BaseControlWindowImpl_get_WindowState(IVideoWindow *iface, LONG *state)
Definition: window.c:309
static HRESULT WINAPI basic_video_IsUsingDefaultDestination(IBasicVideo *iface)
Definition: window.c:1217
HRESULT WINAPI BaseControlWindowImpl_NotifyOwnerMessage(IVideoWindow *iface, OAHWND hwnd, LONG message, LONG_PTR wparam, LONG_PTR lparam)
Definition: window.c:625
static HRESULT WINAPI basic_video_get_DestinationHeight(IBasicVideo *iface, LONG *height)
Definition: window.c:1057
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyleEx(IVideoWindow *iface, LONG style)
Definition: window.c:253
HRESULT video_window_create_window(struct video_window *window)
Definition: window.c:98
static struct video_window * impl_from_IBasicVideo(IBasicVideo *iface)
Definition: window.c:704
static HRESULT WINAPI basic_video_GetTypeInfo(IBasicVideo *iface, UINT index, LCID lcid, ITypeInfo **typeinfo)
Definition: window.c:734
static HRESULT WINAPI basic_video_put_SourceLeft(IBasicVideo *iface, LONG left)
Definition: window.c:864
static HRESULT WINAPI basic_video_GetVideoSize(IBasicVideo *iface, LONG *width, LONG *height)
Definition: window.c:1158
HRESULT WINAPI BaseControlWindowImpl_Invoke(IVideoWindow *iface, DISPID id, REFIID iid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *error_arg)
Definition: window.c:174
HRESULT WINAPI BaseControlWindowImpl_put_AutoShow(IVideoWindow *iface, LONG AutoShow)
Definition: window.c:274
HRESULT WINAPI BaseControlWindowImpl_QueryInterface(IVideoWindow *iface, REFIID iid, void **out)
Definition: window.c:125
HRESULT WINAPI BaseControlWindowImpl_GetMinIdealImageSize(IVideoWindow *iface, LONG *width, LONG *height)
Definition: window.c:651
HRESULT WINAPI BaseControlWindowImpl_put_Left(IVideoWindow *iface, LONG left)
Definition: window.c:373
#define WM_QUARTZ_DESTROY
Definition: window.c:23
static HRESULT WINAPI basic_video_put_SourceHeight(IBasicVideo *iface, LONG height)
Definition: window.c:942
HRESULT WINAPI BaseControlWindowImpl_put_Top(IVideoWindow *iface, LONG top)
Definition: window.c:427
static HRESULT WINAPI basic_video_get_SourceLeft(IBasicVideo *iface, LONG *left)
Definition: window.c:877
static HRESULT WINAPI basic_video_get_VideoHeight(IBasicVideo *iface, LONG *height)
Definition: window.c:850
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT *count)
Definition: window.c:143
static LRESULT CALLBACK WndProcW(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Definition: window.c:34
static HRESULT WINAPI basic_video_put_SourceWidth(IBasicVideo *iface, LONG width)
Definition: window.c:890
HRESULT WINAPI BaseControlWindowImpl_put_Caption(IVideoWindow *iface, BSTR caption)
Definition: window.c:191
static HRESULT WINAPI basic_video_get_SourceHeight(IBasicVideo *iface, LONG *height)
Definition: window.c:955
void video_window_init(struct video_window *window, const IVideoWindowVtbl *vtbl, struct strmbase_filter *owner, struct strmbase_pin *pin, const struct video_window_ops *ops)
Definition: window.c:1275
static HRESULT WINAPI basic_video_GetSourcePosition(IBasicVideo *iface, LONG *left, LONG *top, LONG *width, LONG *height)
Definition: window.c:1087
HRESULT WINAPI BaseControlWindowImpl_SetWindowForeground(IVideoWindow *iface, LONG focus)
Definition: window.c:574
static HRESULT WINAPI basic_video_SetDestinationPosition(IBasicVideo *iface, LONG left, LONG top, LONG width, LONG height)
Definition: window.c:1115
static HRESULT WINAPI basic_video_put_SourceTop(IBasicVideo *iface, LONG top)
Definition: window.c:916
HRESULT WINAPI BaseControlWindowImpl_get_Width(IVideoWindow *iface, LONG *width)
Definition: window.c:415
HRESULT WINAPI BaseControlWindowImpl_get_Height(IVideoWindow *iface, LONG *height)
Definition: window.c:469
HRESULT WINAPI BaseControlWindowImpl_get_Visible(IVideoWindow *iface, LONG *visible)
Definition: window.c:360
HRESULT WINAPI BaseControlWindowImpl_get_Top(IVideoWindow *iface, LONG *top)
Definition: window.c:442
static HRESULT WINAPI basic_video_get_DestinationWidth(IBasicVideo *iface, LONG *width)
Definition: window.c:1006
static const VIDEOINFOHEADER * get_video_format(struct video_window *window)
Definition: window.c:775
HRESULT WINAPI BaseControlWindowImpl_get_Left(IVideoWindow *iface, LONG *left)
Definition: window.c:388
static HRESULT WINAPI basic_video_get_SourceWidth(IBasicVideo *iface, LONG *width)
Definition: window.c:903
static HRESULT WINAPI basic_video_SetSourcePosition(IBasicVideo *iface, LONG left, LONG top, LONG width, LONG height)
Definition: window.c:1070
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyleEx(IVideoWindow *iface, LONG *style)
Definition: window.c:264
static HRESULT WINAPI basic_video_GetVideoPaletteEntries(IBasicVideo *iface, LONG start, LONG count, LONG *ret_count, LONG *palette)
Definition: window.c:1176
static HRESULT WINAPI basic_video_SetDefaultDestinationPosition(IBasicVideo *iface)
Definition: window.c:1147
HRESULT WINAPI BaseControlWindowImpl_put_Visible(IVideoWindow *iface, LONG visible)
Definition: window.c:347
HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames(IVideoWindow *iface, REFIID iid, LPOLESTR *names, UINT count, LCID lcid, DISPID *ids)
Definition: window.c:157
static HRESULT WINAPI basic_video_SetDefaultSourcePosition(IBasicVideo *iface)
Definition: window.c:1104
static HRESULT WINAPI basic_video_put_DestinationLeft(IBasicVideo *iface, LONG left)
Definition: window.c:968
HRESULT WINAPI BaseControlWindowImpl_put_BorderColor(IVideoWindow *iface, LONG Color)
Definition: window.c:549
HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow *iface, LONG *pBackgroundPalette)
Definition: window.c:338
HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain(IVideoWindow *iface, OAHWND *Drain)
Definition: window.c:529
void video_window_unregister_class(void)
Definition: window.c:1269
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo(IVideoWindow *iface, UINT index, LCID lcid, ITypeInfo **typeinfo)
Definition: window.c:150
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyle(IVideoWindow *iface, LONG *style)
Definition: window.c:243
static HRESULT WINAPI basic_video_GetIDsOfNames(IBasicVideo *iface, REFIID iid, LPOLESTR *names, UINT count, LCID lcid, DISPID *ids)
Definition: window.c:741
HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain(IVideoWindow *iface, OAHWND Drain)
Definition: window.c:515
static HRESULT WINAPI basic_video_IsUsingDefaultSource(IBasicVideo *iface)
Definition: window.c:1203
void video_window_cleanup(struct video_window *window)
Definition: window.c:1288
HRESULT WINAPI BaseControlWindowImpl_GetWindowPosition(IVideoWindow *iface, LONG *left, LONG *top, LONG *width, LONG *height)
Definition: window.c:609
static HRESULT WINAPI basic_video_GetDestinationPosition(IBasicVideo *iface, LONG *left, LONG *top, LONG *width, LONG *height)
Definition: window.c:1130
HRESULT WINAPI BaseControlWindowImpl_get_AutoShow(IVideoWindow *iface, LONG *AutoShow)
Definition: window.c:288
HRESULT WINAPI BaseControlWindowImpl_put_Width(IVideoWindow *iface, LONG width)
Definition: window.c:400
HRESULT WINAPI BaseControlWindowImpl_get_Owner(IVideoWindow *iface, OAHWND *Owner)
Definition: window.c:504
HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
Definition: window.c:677
static HRESULT WINAPI basic_video_QueryInterface(IBasicVideo *iface, REFIID iid, void **out)
Definition: window.c:709
HRESULT WINAPI BaseControlWindowImpl_put_Height(IVideoWindow *iface, LONG height)
Definition: window.c:454
static HRESULT WINAPI basic_video_Invoke(IBasicVideo *iface, DISPID id, REFIID iid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *error_arg)
Definition: window.c:758
static HRESULT WINAPI basic_video_get_DestinationLeft(IBasicVideo *iface, LONG *left)
Definition: window.c:979
static ULONG WINAPI basic_video_Release(IBasicVideo *iface)
Definition: window.c:721
HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow *iface, LONG BackgroundPalette)
Definition: window.c:329
HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *CursorHidden)
Definition: window.c:695
HRESULT WINAPI BaseControlWindowImpl_get_BorderColor(IVideoWindow *iface, LONG *Color)
Definition: window.c:540
HRESULT WINAPI BaseControlWindowImpl_put_WindowState(IVideoWindow *iface, LONG state)
Definition: window.c:299
OLECHAR * BSTR
Definition: compat.h:2293
HANDLE HWND
Definition: compat.h:19
#define CALLBACK
Definition: compat.h:35
LCID lcid
Definition: locale.c:5660
#define L(x)
Definition: resources.c:13
#define OAFALSE
Definition: dshow.h:53
#define OATRUE
Definition: dshow.h:49
#define EC_USERABORT
Definition: evcode.h:50
#define abs(i)
Definition: fconv.c:206
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint start
Definition: gl.h:1545
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
GLenum src
Definition: glext.h:6340
GLuint * ids
Definition: glext.h:5907
GLuint GLuint * names
Definition: glext.h:11545
GLsizeiptr size
Definition: glext.h:5919
GLuint index
Definition: glext.h:6031
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLenum const GLfloat * params
Definition: glext.h:5645
GLint left
Definition: glext.h:7726
GLbitfield flags
Definition: glext.h:7161
GLuint64EXT * result
Definition: glext.h:11304
GLenum GLsizei len
Definition: glext.h:6722
unsigned int UINT
Definition: sysinfo.c:13
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
static IHTMLWindow2 * window
Definition: events.c:77
static EXCEPINFO excepinfo
Definition: automation.c:47
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
Definition: string.c:91
static VARIANTARG static DISPID
Definition: ordinal.c:49
static HPALETTE palette
Definition: clipboard.c:1457
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
Definition: rtlfuncs.h:1629
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:240
#define WS_CHILD
Definition: pedump.c:617
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define WS_MAXIMIZE
Definition: pedump.c:623
short WCHAR
Definition: pedump.c:58
#define WS_VSCROLL
Definition: pedump.c:627
#define WS_MINIMIZE
Definition: pedump.c:622
#define WS_VISIBLE
Definition: pedump.c:620
long LONG
Definition: pedump.c:60
#define WS_DISABLED
Definition: pedump.c:621
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_HSCROLL
Definition: pedump.c:628
#define WS_CLIPCHILDREN
Definition: pedump.c:619
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define WM_QUERYNEWPALETTE
Definition: winuser.h:1906
#define SW_HIDE
Definition: winuser.h:779
#define WM_CLOSE
Definition: winuser.h:1649
#define SWP_NOACTIVATE
Definition: winuser.h:1253
#define GetWindowLongPtrW
Definition: winuser.h:4983
#define SWP_FRAMECHANGED
Definition: winuser.h:1251
#define WM_KEYUP
Definition: winuser.h:1744
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
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 GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define SW_MINIMIZE
Definition: winuser.h:787
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
#define WM_SIZE
Definition: winuser.h:1639
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1806
#define SWP_NOMOVE
Definition: winuser.h:1255
#define WM_PALETTECHANGED
Definition: winuser.h:1905
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
#define WM_DEVMODECHANGE
Definition: winuser.h:1659
#define WM_RBUTTONUP
Definition: winuser.h:1808
#define WM_NCRBUTTONDBLCLK
Definition: winuser.h:1725
#define WM_RBUTTONDBLCLK
Definition: winuser.h:1809
#define SWP_NOSIZE
Definition: winuser.h:1256
#define WM_MOUSEMOVE
Definition: winuser.h:1803
#define WM_NCMBUTTONUP
Definition: winuser.h:1727
#define WM_LBUTTONDOWN
Definition: winuser.h:1804
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1654
#define WM_NCLBUTTONDBLCLK
Definition: winuser.h:1722
#define WM_RBUTTONDOWN
Definition: winuser.h:1807
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define WM_NCMOUSEMOVE
Definition: winuser.h:1719
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define HWND_TOP
Definition: winuser.h:1218
#define WM_NCMBUTTONDOWN
Definition: winuser.h:1726
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)
#define WM_MBUTTONDBLCLK
Definition: winuser.h:1812
#define WM_MOUSEACTIVATE
Definition: winuser.h:1665
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define WM_LBUTTONUP
Definition: winuser.h:1805
#define CW_USEDEFAULT
Definition: winuser.h:225
#define WM_NCLBUTTONUP
Definition: winuser.h:1721
#define WM_ACTIVATEAPP
Definition: winuser.h:1660
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define SW_SHOW
Definition: winuser.h:786
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
#define WM_NCRBUTTONUP
Definition: winuser.h:1724
#define WM_KEYDOWN
Definition: winuser.h:1743
#define SWP_NOZORDER
Definition: winuser.h:1258
#define SW_MAXIMIZE
Definition: winuser.h:783
#define WM_NCMBUTTONDBLCLK
Definition: winuser.h:1728
#define SetWindowLongPtrW
Definition: winuser.h:5512
#define WM_MBUTTONUP
Definition: winuser.h:1811
#define GWL_STYLE
Definition: winuser.h:863
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
#define WM_NCLBUTTONDOWN
Definition: winuser.h:1720
#define WM_PALETTEISCHANGING
Definition: winuser.h:1904
#define WM_MBUTTONDOWN
Definition: winuser.h:1810
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define WM_NCRBUTTONDOWN
Definition: winuser.h:1723
#define GWL_EXSTYLE
Definition: winuser.h:862
const WCHAR * str
DWORD LCID
Definition: nls.h:13
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
@ IBasicVideo_tid
Definition: strmbase.h:226
@ IVideoWindow_tid
Definition: strmbase.h:230
HRESULT strmbase_get_typeinfo(enum strmbase_type_id tid, ITypeInfo **typeinfo)
Definition: dispatch.c:38
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
LPCWSTR lpszClassName
Definition: winuser.h:3293
WNDPROC lpfnWndProc
Definition: winuser.h:3285
int cbWndExtra
Definition: winuser.h:3287
Definition: graph.c:32
Definition: image.c:84
Definition: tftpd.h:60
Definition: style.c:91
REFERENCE_TIME AvgTimePerFrame
Definition: amvideo.idl:187
IVideoWindow IVideoWindow_iface
const struct video_window_ops * ops
IBasicVideo IBasicVideo_iface
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define VFW_E_NO_PALETTE_AVAILABLE
Definition: vfwmsgs.h:71
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1382
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:3451
#define ERROR_CLASS_ALREADY_EXISTS
Definition: winerror.h:1236
#define ERROR_CLASS_DOES_NOT_EXIST
Definition: winerror.h:1237
#define E_POINTER
Definition: winerror.h:3480