Пример #1
0
        private void Initialize(out IntPtr phwnd, IntPtr hParent, int x, int y, int nWidth, int nHeight, int dwStyle)
        {
            object factoryObject = null;
            object managerObject = null;

            try
            {
                var hr = ClassFactory.GetClassFactory(ref CLSID_MediaWindowManager, ref ClassFactory.IID_ClassFactory, out factoryObject);
                Marshal.ThrowExceptionForHR(hr);

                var factory = (IClassFactory)factoryObject;

                var iidMediaWindow = typeof(IMediaWindowManager).GUID;
                hr = factory.CreateInstance(null, ref iidMediaWindow, out managerObject);
                Marshal.ThrowExceptionForHR(hr);

                _manager      = (IMediaWindowManager)managerObject;
                managerObject = null;

                Marshal.ThrowExceptionForHR(_manager.CreateMediaWindow(out phwnd, hParent, x, y, nWidth, nHeight, dwStyle));
            }
            finally
            {
                if (factoryObject != null)
                {
                    Marshal.FinalReleaseComObject(factoryObject);
                }

                if (managerObject != null)
                {
                    Marshal.FinalReleaseComObject(managerObject);
                }
            }
        }
Пример #2
0
        private void Dispose(bool disposing)
        {
            if (disposing && _manager != null)
            {
                _manager.SetRunning(false, null, null, null);

                Marshal.FinalReleaseComObject(_manager);
                _manager = null;
            }
        }