Beispiel #1
0
COggSplitter::COggSplitter(LPUNKNOWN pUnk, HRESULT *phr) :
    CBaseFilter(NAME("Ogg Splitter"), pUnk, &m_csFilter, CLSID_OggSplitter),
	CPersistPropertyBag(arOggSplitterProps, SIZEOF_ARRAY(arOggSplitterProps), &CLSID_OggSplitter),
	CRegistryStuff(&CLSID_OggSplitter),

	m_rtStart((REFERENCE_TIME)0),
	m_rtStop(_I64_MAX/2),
	m_rtDuration(_I64_MAX/2),
	m_dRate(1),
	m_pLastSeek(NULL)
{
	if (SUCCEEDED(*phr))
	{
		COggSplitInputPin *pIn = new COggSplitInputPin(NAME("In"), this,
									&m_csFilter, phr, L"In");
        if (!pIn) *phr = E_OUTOFMEMORY;
		else
		{
			if (SUCCEEDED(*phr)) m_pInput = pIn; else delete pIn;
		}
	}

	m_paOutput = NULL;
	m_iOutputs = 0;
	m_paStream = NULL;
	m_iStreams = 0;
	m_pChapterInfo = NULL;
	m_iChapters = 0;
	m_bStopPauseRunCalled = false;

	m_bChaptersAsStreams = true;
	
	LoadFromRegistry(idSeekToKeyFrame, &m_bAlwaysSearchToKeyFrame, true);
	LoadFromRegistry(idAlwaysEnableAllStreams, &m_bAlwaysEnableAllStreams, false);
	LoadFromRegistry(idShowTrayIcon, &m_bShowTrayIcon, true);

	m_bEnableAll = m_bAlwaysEnableAllStreams;

	if (m_bShowTrayIcon)
		InitTrayIcon();
}
Beispiel #2
0
static LRESULT CALLBACK TrayCBWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg == WM_TASKBARCREATED)
	{
		InitTrayIcon();
		return 0;
	}
	switch (uMsg)
	{
		case WM_TRAY_NOTIFY:
			switch(lParam)
			{
				case WM_LBUTTONDBLCLK:
					PostMessage(hWnd, WM_COMMAND, MAKEWPARAM(IDM_TRAY_HIDESHOW, 0), 0);
					break;
				case WM_RBUTTONUP:
				{
					SetForegroundWindow(hWnd);
					POINT pt = { 0 };
					GetCursorPos(&pt);
					TrackPopupMenu(hTrayMenu, 0, pt.x, pt.y, 0, hWnd, 0);
					PostMessage(hWnd, WM_NULL, 0, 0);
					break;
				}
			}
			break;
		case WM_COMMAND:
			switch (LOWORD(wParam))
			{
				case IDM_TRAY_HIDESHOW:
					if (IsWindowVisible(hMainWnd))
					{
						//ShowWindow(hMainWnd, SW_HIDE);
						CloseWindow(hMainWnd);
					}
					else
					{
						ShowWindow(hMainWnd, SW_RESTORE);
						SetForegroundWindow(hMainWnd);
					}
					break;
				default:
					PostMessage(hMainWnd, WM_COMMAND, wParam, lParam);
					break;
			}
			break;
		case WM_INITMENUPOPUP:
			SendMessage(hMainWnd, WM_INITMENUPOPUP, 0, 0);
			break;
		case WM_MEASUREITEM:
		{
			if (!dwNoOwnerDrawMenu)
			{
				LPMEASUREITEMSTRUCT pMIS = (LPMEASUREITEMSTRUCT)lParam;
				if (pMIS->CtlType == ODT_MENU)
				{
					return pEBMenuTray->MeasureItem(wParam, lParam);
				}
			}
			return FALSE;
		}
		case WM_DRAWITEM:
		{
			if (!dwNoOwnerDrawMenu)
			{
				LPDRAWITEMSTRUCT pDIS = (LPDRAWITEMSTRUCT)lParam;
				if (pDIS->CtlType == ODT_MENU)
				{
					return pEBMenuTray->DrawItem(wParam, lParam);
				}
			}
			return FALSE;
		}
		default:
			return DefWindowProc(hWnd, uMsg, wParam, lParam);
	}
	return 0;
}