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(); }
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; }