Update of /cvsroot/bdadev/CleverTelly In directory sc8-pr-cvs1:/tmp/cvs-serv22207 Modified Files: CleverTelly.cpp CleverTelly.dsp CleverTelly.rc MainDlg.cpp MainDlg.h StdAfx.h resource.h Log Message: Move to modeless dialog Lots of improvements but still interim check in Index: CleverTelly.cpp =================================================================== RCS file: /cvsroot/bdadev/CleverTelly/CleverTelly.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CleverTelly.cpp 25 Feb 2003 08:02:32 -0000 1.5 --- CleverTelly.cpp 25 Feb 2003 17:19:02 -0000 1.6 *************** *** 60,64 **** CComObject<CMainDlg>* pApplication = new CComObject<CMainDlg>; pApplication->AddRef(); ! nRet = pApplication->DoModal(); pApplication->Release(); } --- 60,75 ---- CComObject<CMainDlg>* pApplication = new CComObject<CMainDlg>; pApplication->AddRef(); ! HACCEL hAccel= LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_MAINFRAME)); ! HWND hWnd = pApplication->Create(NULL); ! MSG msg; ! while (GetMessage (&msg,NULL,0,0)) ! { ! if(!TranslateAccelerator (hWnd, hAccel, &msg) && !IsDialogMessage(hWnd, &msg)) ! { ! TranslateMessage (&msg); ! DispatchMessage (&msg); ! } ! } ! pApplication->Release(); } Index: CleverTelly.dsp =================================================================== RCS file: /cvsroot/bdadev/CleverTelly/CleverTelly.dsp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CleverTelly.dsp 24 Feb 2003 17:01:32 -0000 1.3 --- CleverTelly.dsp 25 Feb 2003 17:19:04 -0000 1.4 *************** *** 141,144 **** --- 141,148 ---- SOURCE=.\res\CleverTelly.ico # End Source File + # Begin Source File + + SOURCE=.\CleverTelly.rgs + # End Source File # End Group # End Target Index: CleverTelly.rc =================================================================== RCS file: /cvsroot/bdadev/CleverTelly/CleverTelly.rc,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CleverTelly.rc 24 Feb 2003 17:01:35 -0000 1.3 --- CleverTelly.rc 25 Feb 2003 17:19:04 -0000 1.4 *************** *** 47,50 **** --- 47,51 ---- #endif // APSTUDIO_INVOKED + ///////////////////////////////////////////////////////////////////////////// // *************** *** 52,56 **** // ! IDR_CleverTellyReg REGISTRY DISCARDABLE "CleverTelly.rgs" ///////////////////////////////////////////////////////////////////////////// --- 53,57 ---- // ! IDR_CleverTellyReg REGISTRY DISCARDABLE "CleverTelly.rgs" ///////////////////////////////////////////////////////////////////////////// *************** *** 85,88 **** --- 86,90 ---- EXSTYLE WS_EX_CONTROLPARENT CAPTION "CleverTelly" + MENU IDR_CLEVERTELLY FONT 8, "MS Sans Serif" BEGIN *************** *** 102,105 **** --- 104,108 ---- 0x0000, 0x0000, 0x0300, 0x0000, 0x3de9, 0x0000, 0x3270, 0x0000, 0x000b, 0xffff, 0x000b, 0xffff, 0x000b, 0x0000, 0x0013, 0x0000, 0x0000, + 0 END *************** *** 131,148 **** IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE BEGIN ! "N", ID_FILE_NEW, VIRTKEY, CONTROL ! "O", ID_FILE_OPEN, VIRTKEY, CONTROL ! "S", ID_FILE_SAVE, VIRTKEY, CONTROL ! "P", ID_FILE_PRINT, VIRTKEY, CONTROL ! "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL ! "X", ID_EDIT_CUT, VIRTKEY, CONTROL ! "C", ID_EDIT_COPY, VIRTKEY, CONTROL ! "V", ID_EDIT_PASTE, VIRTKEY, CONTROL ! VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT ! VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT ! VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL ! VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT ! VK_F6, ID_NEXT_PANE, VIRTKEY ! VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT END --- 134,152 ---- IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE BEGIN ! "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT ! "N", ID_FILE_NEW, VIRTKEY, CONTROL, NOINVERT ! "O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT ! "P", ID_FILE_PRINT, VIRTKEY, CONTROL, NOINVERT ! "S", ID_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT ! "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT ! VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT ! VK_CANCEL, IDM_FULLSCREEN, VIRTKEY, CONTROL, NOINVERT ! VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT ! VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT ! VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT ! VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT ! VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT ! "X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT ! "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT END *************** *** 169,174 **** BLOCK "StringFileInfo" BEGIN ! BLOCK "040904B0" BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "test1 Module\0" --- 173,179 ---- BLOCK "StringFileInfo" BEGIN ! BLOCK "040904b0" BEGIN + VALUE "Comments", "\0" VALUE "CompanyName", "\0" VALUE "FileDescription", "test1 Module\0" *************** *** 176,182 **** --- 181,190 ---- VALUE "InternalName", "TEST1\0" VALUE "LegalCopyright", "Copyright 2003\0" + VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "CleverTelly.exe\0" + VALUE "PrivateBuild", "\0" VALUE "ProductName", "CleverTelly Module\0" VALUE "ProductVersion", "1, 0, 0, 1\0" + VALUE "SpecialBuild", "\0" END END *************** *** 304,307 **** --- 312,324 ---- IDR_CLEVERTELLY MENU DISCARDABLE BEGIN + POPUP "&View" + BEGIN + MENUITEM "&Full Screen\tCtrl+Pause", IDM_FULLSCREEN + MENUITEM SEPARATOR + MENUITEM "&16:9 Display", IDM_16x9_DISPLAY + MENUITEM "&4:3 Display", IDM_4x3_DISPLAY + MENUITEM SEPARATOR + MENUITEM "Use &Overlay", IDM_USEOVERLAY + END POPUP "Help" BEGIN Index: MainDlg.cpp =================================================================== RCS file: /cvsroot/bdadev/CleverTelly/MainDlg.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MainDlg.cpp 25 Feb 2003 08:02:32 -0000 1.3 --- MainDlg.cpp 25 Feb 2003 17:19:04 -0000 1.4 *************** *** 22,25 **** --- 22,59 ---- ///////////////////////////////////////////////////////////////////////////// // CMainDlg + CMainDlg::CMainDlg() + { + m_FullScreen = FALSE; + m_ARWidth = 16; + m_ARHeight = 9; + m_UseOverlay = FALSE; + } + + CMainDlg::~CMainDlg() + { + } + + LRESULT CMainDlg::OnGraphNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) + { + long evCode, param1, param2; + HRESULT Result; + while (SUCCEEDED(m_MediaEvents->GetEvent(&evCode, ¶m1, ¶m2, 0))) + { + ATLTRACE("Graph Notify Event %d\n", evCode); + switch(evCode) + { + case EC_VIDEO_SIZE_CHANGED: + SetupAspectRatio(); + break; + default: + break; + } + Result = m_MediaEvents->FreeEventParams(evCode, param1, param2); + } + + bHandled = TRUE; + return TRUE; + } + LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) *************** *** 63,67 **** --- 97,109 ---- } + // set the use overlay flag + CComPtr<IMSVidVideoRenderer> pVidRenderer; + CHECK(m_pVidControl->get_VideoRendererActive(&pVidRenderer)); + if(pVidRenderer) + { + pVidRenderer->put_UsingOverlay(m_UseOverlay?VARIANT_TRUE:VARIANT_FALSE); + } + // create the Tune Request store Result = CreateTuneReqStore(); if(FAILED(Result)) *************** *** 71,80 **** } ! ! Result = LoadUpDefaultTuneRequest(); ! if(FAILED(Result)) { ! ATLTRACE("LoadUpDefaultTuneRequest Returned %8x\n", Result); ! return FALSE; } --- 113,144 ---- } ! // Load up either channel 1 for the time being or ! // create a default tune request so that we can listen to the ! // TIF and get the full list of channels ! // Once we have tuned in to a channel then run the video ! if(m_TuneRequestStore) { ! long Count(0); ! CHECK(m_TuneRequestStore->get_Count(&Count)); ! if(Count == 0) ! { ! Result = LoadUpDefaultTuneRequest(); ! if(FAILED(Result)) ! { ! ATLTRACE("LoadUpDefaultTuneRequest Returned %8x\n", Result); ! return FALSE; ! } ! } ! else ! { ! Result = TuneToChannel(1); ! if(FAILED(Result)) ! { ! ATLTRACE("TuneToChannel Returned %8x\n", Result); ! return FALSE; ! } ! } ! ! Result = m_pVidControl->Run(); } *************** *** 89,96 **** --- 153,189 ---- } + LRESULT CMainDlg::OnFullScreen(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) + { + if(m_FullScreen == FALSE) + { + m_hMenu = GetMenu(); + SetMenu(NULL); + RECT Pos = { 0, 0, GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN)}; + GetWindowRect(&m_Rect); + SetWindowPos(HWND_TOPMOST, &Pos, SWP_SHOWWINDOW | SWP_NOACTIVATE); + SetWindowLong(GWL_STYLE, WS_VISIBLE); + SetWindowRgn(NULL,TRUE); + } + else + { + SetMenu(m_hMenu); + SetWindowPos(HWND_NOTOPMOST, &m_Rect, SWP_SHOWWINDOW | SWP_NOACTIVATE); + SetWindowLong(GWL_STYLE, WS_OVERLAPPEDWINDOW | WS_VISIBLE); + SetWindowRgn(NULL,TRUE); + } + m_FullScreen = !m_FullScreen; + return 0; + } + + LRESULT CMainDlg::OnClose(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { AtlAdviseSinkMap(this, FALSE); + if(m_MediaEvents) + { + StopListeningForAspectChanges(); + } + if(m_ConnectionPoint) { *************** *** 118,122 **** } ! EndDialog(wID); return 0; } --- 211,217 ---- } ! DestroyWindow(); ! PostQuitMessage(wID); ! return 0; } *************** *** 126,131 **** RECT WinRect; CWindow hwndVC(GetDlgItem(IDC_MSVIDCTL)); ! GetWindowRect(&WinRect); ! ScreenToClient(&WinRect); hwndVC.MoveWindow(&WinRect, TRUE); } --- 221,225 ---- RECT WinRect; CWindow hwndVC(GetDlgItem(IDC_MSVIDCTL)); ! GetClientRect(&WinRect); hwndVC.MoveWindow(&WinRect, TRUE); } *************** *** 188,195 **** --- 282,291 ---- { m_TuneRequestStore->AttachToVideoControl(m_pVidControl); + ListenForAspectChanges(); } else if(CurrState == STATE_UNBUILT) { m_TuneRequestStore->DetachFromTIF(); + StopListeningForAspectChanges(); } } *************** *** 197,200 **** --- 293,297 ---- void __stdcall CMainDlg::OnDblClick() { + ATLTRACE("OnDblClick\n"); } *************** *** 313,321 **** } - HRESULT CMainDlg::LoadUpDefaultTuneRequest() { - long Freq = 481833; - long SID = 8261; HRESULT Result = S_OK; CComPtr<ITuningSpace> TuningSpace; --- 410,415 ---- *************** *** 326,330 **** // Try to match any tuning spaces named "Local (something) Cable". CComPtr<ITuningSpaces> TuningSpaces; ! CComBSTR bstrName("SimpleTV"); Result = TuningSpaceContainer->TuningSpacesForName(bstrName, &TuningSpaces); if (SUCCEEDED(Result)) --- 420,424 ---- // Try to match any tuning spaces named "Local (something) Cable". CComPtr<ITuningSpaces> TuningSpaces; ! CComBSTR bstrName(L"SimpleTV"); Result = TuningSpaceContainer->TuningSpacesForName(bstrName, &TuningSpaces); if (SUCCEEDED(Result)) *************** *** 345,369 **** Result = TuningSpace->CreateTuneRequest(&TuneRequest); ! CComQIPtr<IDVBTuneRequest> DVBTuneRequest = TuneRequest; ! ! TuneRequest->Release(); ! ! CComPtr<ILocator> Locator; ! ! Result = DVBTuneRequest->get_Locator(&Locator); ! ! if(Locator == NULL) ! { ! //Locator.CoCreateInstance(CLSID_DVBTLocator); ! //Result = DVBTuneRequest->put_Locator(Locator); ! } ! ! //Locator->put_CarrierFrequency(Freq); ! ! Result = DVBTuneRequest->put_SID(SID); ! ! CComVariant var(DVBTuneRequest); Result = m_pVidControl->View(&var); - Result = m_pVidControl->Run(); } } --- 439,444 ---- Result = TuningSpace->CreateTuneRequest(&TuneRequest); ! CComVariant var(TuneRequest); Result = m_pVidControl->View(&var); } } *************** *** 388,390 **** --- 463,634 ---- } return Result; + } + + void CMainDlg::SetupAspectRatio() + { + if(m_VMRControl) + { + long Width; + long Height; + long ARWidth; + long ARHeight; + + HRESULT Result = m_VMRControl->GetNativeVideoSize(&Width, &Height, &ARWidth, &ARHeight); + if(SUCCEEDED(Result)) + { + // adjust the incoming AR by what we tell the system the + // output Aspect ratio is. + // This cross multiply tells us what adjustment to make + // in the direction we have to shrink to display on the window + ARWidth *= m_ARHeight; + ARHeight *= m_ARWidth; + RECT SrcRect = {0, 0, Width, Height}; + RECT WinRect; + GetClientRect(&WinRect); + + if(ARWidth == ARHeight) + { + // it's an exact fit so just scale to the full window + } + else if(ARWidth > ARHeight) + { + // letterbox + long NewHeight = MulDiv((WinRect.bottom - WinRect.top), ARHeight, ARWidth); + WinRect.top += ((WinRect.bottom - WinRect.top) - NewHeight) / 2; + WinRect.bottom = WinRect.top + NewHeight; + } + else + { + // Sidebar + long NewWidth = MulDiv((WinRect.right - WinRect.left), ARWidth, ARHeight); + WinRect.left += ((WinRect.right - WinRect.left) - Height) / 2; + WinRect.right = WinRect.left + Height; + } + if(FAILED(m_VMRControl->SetVideoPosition(&SrcRect, &WinRect))) + { + ATLTRACE("SetupAspectRatio : SetVideoPosition failed\n"); + } + } + } + else + { + ATLTRACE("SetupAspectRatio : No VMR Control\n"); + } + } + + void CMainDlg::ListenForAspectChanges() + { + CComQIPtr<IMSVidGraphSegmentContainer> GraphSegCont = m_pVidControl; + if(GraphSegCont) + { + CComPtr<IGraphBuilder> GraphBuilder; + HRESULT Result = GraphSegCont->get_Graph(&GraphBuilder); + if(GraphBuilder) + { + m_MediaEvents = GraphBuilder; + if(m_MediaEvents) + { + m_MediaEvents->SetNotifyWindow((LONG)m_hWnd, WM_GRAPHNOTIFY, NULL); + } + else + { + ATLTRACE("ListenForAspectChanges : No MediaEvents\n"); + } + } + else + { + ATLTRACE("ListenForAspectChanges : No Graph\n"); + } + + // declare local variables + CComPtr<IEnumFilters> EnumFilters; + + // find the VMR in the filter graph + // we do this by looking for filters that + // implement the IVMRWindowlessControl interface + Result = GraphBuilder->EnumFilters(&EnumFilters); + if(SUCCEEDED(Result)) + { + CComPtr<IBaseFilter> BaseFilter; + ULONG Fetched(0); + while(EnumFilters->Next(1, &BaseFilter, &Fetched) == S_OK) + { + m_VMRControl = BaseFilter; + if(m_VMRControl != NULL) + { + // setup the aspect ratio at the beginning + SetupAspectRatio(); + return; + } + } + } + ATLTRACE("ListenForAspectChanges : No VMR\n"); + } + else + { + ATLTRACE("ListenForAspectChanges : No GraphSegCont\n"); + } + } + + void CMainDlg::StopListeningForAspectChanges() + { + if(m_MediaEvents) + { + HRESULT Result = m_MediaEvents->SetNotifyWindow(NULL, WM_GRAPHNOTIFY, NULL); + m_MediaEvents.Release(); + } + + if(m_VMRControl) + { + m_VMRControl.Release(); + } + + } + + HRESULT CMainDlg::TuneToChannel(int ChannelNumber) + { + CComPtr<TUNEREQSTORELib::IEnumTuneInfo> EnumTuneInfo; + + CHECK(m_TuneRequestStore->get__NewEnum(&EnumTuneInfo)); + + CComPtr<TUNEREQSTORELib::ITuneInfo> TuneInfo; + ULONG Count; + + while(EnumTuneInfo->Next(1, &TuneInfo, &Count) == S_OK) + { + long ThisKeyedNumber(0); + CHECK(TuneInfo->get_KeyedNumber(&ThisKeyedNumber)); + if(ThisKeyedNumber == ChannelNumber) + { + CComPtr<TUNEREQSTORELib::ITuneRequest> TuneRequest; + CHECK(TuneInfo->get_TuneRequest(&TuneRequest)); + + CComVariant var(TuneRequest); + return m_pVidControl->View(&var); + } + TuneInfo.Release(); + } + return E_FAIL; + } + + LRESULT CMainDlg::On4x3(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) + { + m_ARWidth = 4; + m_ARHeight = 3; + SetupAspectRatio(); + return FALSE; + } + + LRESULT CMainDlg::On16x9(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) + { + m_ARWidth = 16; + m_ARHeight = 9; + SetupAspectRatio(); + return FALSE; + } + + LRESULT CMainDlg::OnUseOverlay(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) + { + m_UseOverlay = !m_UseOverlay; + return FALSE; } Index: MainDlg.h =================================================================== RCS file: /cvsroot/bdadev/CleverTelly/MainDlg.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** MainDlg.h 25 Feb 2003 08:02:32 -0000 1.2 --- MainDlg.h 25 Feb 2003 17:19:04 -0000 1.3 *************** *** 23,26 **** --- 23,27 ---- extern _ATL_FUNC_INFO OnStateChangeInfo; + #define WM_GRAPHNOTIFY (WM_APP + 1) class CMainDlg : public CAxDialogImpl<CMainDlg>, *************** *** 36,40 **** { public: ! enum { IDD = IDD_MAINDLG }; DECLARE_REGISTRY_RESOURCEID(IDR_CleverTellyReg) --- 37,43 ---- { public: ! CMainDlg(); ! ~CMainDlg(); ! enum { IDD = IDD_MAINDLG }; DECLARE_REGISTRY_RESOURCEID(IDR_CleverTellyReg) *************** *** 61,67 **** --- 64,75 ---- COMMAND_ID_HANDLER(WM_CLOSE, OnClose) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) + MESSAGE_HANDLER(WM_GRAPHNOTIFY, OnGraphNotify) + COMMAND_ID_HANDLER(IDM_FULLSCREEN, OnFullScreen) COMMAND_ID_HANDLER(IDM_ABOUT, OnAppAbout) COMMAND_ID_HANDLER(IDOK, OnClose) COMMAND_ID_HANDLER(IDCANCEL, OnClose) + COMMAND_ID_HANDLER(IDM_16x9_DISPLAY, On16x9) + COMMAND_ID_HANDLER(IDM_4x3_DISPLAY, On4x3) + COMMAND_ID_HANDLER(IDM_USEOVERLAY, OnUseOverlay) END_MSG_MAP() *************** *** 83,90 **** LRESULT OnMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); ! LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnClose(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); // IMSVidCtlComp --- 91,103 ---- LRESULT OnMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); ! ! LRESULT OnGraphNotify(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); + LRESULT OnFullScreen(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnClose(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); + LRESULT On4x3(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); + LRESULT On16x9(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); + LRESULT OnUseOverlay(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); // IMSVidCtlComp *************** *** 125,128 **** --- 138,145 ---- HRESULT LoadUpDefaultTuneRequest(); HRESULT CreateTuneReqStore(); + void SetupAspectRatio(); + void ListenForAspectChanges(); + void StopListeningForAspectChanges(); + HRESULT TuneToChannel(int ChannelNumber); private: *************** *** 130,134 **** --- 147,159 ---- TUNEREQSTORELib::ITuneRequestStorePtr m_TuneRequestStore; CComPtr<IConnectionPoint> m_ConnectionPoint; + CComQIPtr<IMediaEventEx> m_MediaEvents; + CComQIPtr<IVMRWindowlessControl> m_VMRControl; DWORD m_dwCookie; + HMENU m_hMenu; + BOOL m_FullScreen; + BOOL m_UseOverlay; + RECT m_Rect; + long m_ARWidth; + long m_ARHeight; }; Index: StdAfx.h =================================================================== RCS file: /cvsroot/bdadev/CleverTelly/StdAfx.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** StdAfx.h 24 Feb 2003 17:01:39 -0000 1.4 --- StdAfx.h 25 Feb 2003 17:19:04 -0000 1.5 *************** *** 30,33 **** --- 30,35 ---- #include <atlctrlw.h> + #include <dshow.h> + #define CHECK(x) { HRESULT __hr(x); if(FAILED(__hr)) {ATLTRACE(#x " Returned %8x\n", __hr); _asm{int 3}; return __hr;}} Index: resource.h =================================================================== RCS file: /cvsroot/bdadev/CleverTelly/resource.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** resource.h 24 Feb 2003 17:01:39 -0000 1.3 --- resource.h 25 Feb 2003 17:19:04 -0000 1.4 *************** *** 10,13 **** --- 10,17 ---- #define IDC_MSVIDCTL 1000 #define IDM_ABOUT 32772 + #define IDM_FULLSCREEN 32773 + #define IDM_16x9_DISPLAY 32774 + #define IDM_4x3_DISPLAY 32775 + #define IDM_USEOVERLAY 32776 // Next default values for new objects *************** *** 16,20 **** #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 203 ! #define _APS_NEXT_COMMAND_VALUE 32773 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 --- 20,24 ---- #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 203 ! #define _APS_NEXT_COMMAND_VALUE 32777 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 |