GraphicsInterface::GraphicsInterface() { InitializeCriticalSection(&_csCreateDisplay); _hTimerQueue = CreateTimerQueue(); _hDisplayTimer = NULL; _nDisplayType = 0; _override_always_up = false; _bmInfo = NULL; if (m_ssSettings.bOSDAllMonitors) { CMonitors cm; for (int i = 0; i < cm.GetCount(); ++i) { _ges.push_back(new GraphicsEngine(i)); } } else { GraphicsEngine* ge = new GraphicsEngine(m_ssSettings.nOSDMonitor); _ges.push_back(ge); } }
BOOL CPPageFullscreen::OnInitDialog() { __super::OnInitDialog(); SetHandCursor(m_hWnd, IDC_COMBO1); const CAppSettings& s = AfxGetAppSettings(); m_fullScreenMonitor = s.strFullScreenMonitor; m_bLaunchFullscreen = s.fLaunchfullscreen; m_fExitFullScreenAtTheEnd = s.fExitFullScreenAtTheEnd; m_autoChangeFSModes = s.autoChangeFSMode.modes; m_bAutoChangeFSModeEnabled = s.autoChangeFSMode.bEnabled; m_bAutoChangeFSModeApplyDefModeAtFSExist = s.autoChangeFSMode.bApplyDefaultModeAtFSExit; m_bAutoChangeFSModeRestoreResAfterProgExit = s.autoChangeFSMode.bRestoreResAfterProgExit; m_uAutoChangeFullscrResDelay = s.autoChangeFSMode.uDelay; CMonitors monitors; CString currentMonitorName; monitors.GetNearestMonitor(AfxGetMainWnd()).GetName(currentMonitorName); m_fullScreenMonitorCtrl.AddString(ResStr(IDS_FULLSCREENMONITOR_CURRENT)); m_monitorDisplayNames.emplace_back(_T("Current")); m_iFullScreenMonitor = 0; for (int i = 0; i < monitors.GetCount(); i++) { CMonitor monitor = monitors.GetMonitor(i); if (monitor.IsMonitor()) { CString monitorName; monitor.GetName(monitorName); CString str = monitorName; if (monitorName == currentMonitorName) { str.AppendFormat(_T(" - [%s]"), ResStr(IDS_FULLSCREENMONITOR_CURRENT)); } DISPLAY_DEVICE displayDevice = { sizeof(displayDevice) }; if (EnumDisplayDevices(monitorName, 0, &displayDevice, 0)) { str.AppendFormat(_T(" - %s"), displayDevice.DeviceString); } m_fullScreenMonitorCtrl.AddString(str); m_monitorDisplayNames.emplace_back(monitorName); if (m_fullScreenMonitor == monitorName && m_iFullScreenMonitor == 0) { m_iFullScreenMonitor = m_fullScreenMonitorCtrl.GetCount() - 1; } } } if (m_fullScreenMonitorCtrl.GetCount() > 2) { GetDlgItem(IDC_COMBO1)->EnableWindow(TRUE); } else { m_iFullScreenMonitor = 0; GetDlgItem(IDC_COMBO1)->EnableWindow(FALSE); } m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES | LVS_EX_BORDERSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_CHECKBOXES | LVS_EX_FLATSB); m_list.InsertColumn(COL_N, ResStr(IDS_PPAGE_FS_CLN_ON_OFF), LVCFMT_LEFT, 60); m_list.InsertColumn(COL_FRAMERATE_START, ResStr(IDS_PPAGE_FS_CLN_FROM_FPS), LVCFMT_RIGHT, 60); m_list.InsertColumn(COL_FRAMERATE_STOP, ResStr(IDS_PPAGE_FS_CLN_TO_FPS), LVCFMT_RIGHT, 60); m_list.InsertColumn(COL_DISPLAY_MODE, ResStr(IDS_PPAGE_FS_CLN_DISPLAY_MODE), LVCFMT_LEFT, 135); m_bHideFullscreenControls = s.bHideFullscreenControls; m_uHideFullscreenControlsDelay = s.uHideFullscreenControlsDelay; m_bHideFullscreenDockedPanels = s.bHideFullscreenDockedPanels; auto addHidePolicy = [&](LPCTSTR lpszName, CAppSettings::HideFullscreenControlsPolicy ePolicy) { int n = m_hidePolicy.InsertString(-1, lpszName); if (n >= 0) { VERIFY(m_hidePolicy.SetItemData(n, static_cast<DWORD_PTR>(ePolicy)) != CB_ERR); if (ePolicy == s.eHideFullscreenControlsPolicy) { VERIFY(m_hidePolicy.SetCurSel(n) == n); } } else { ASSERT(FALSE); } }; auto loadString = [&](UINT nID) { CString ret; VERIFY(ret.LoadString(nID)); return ret; }; addHidePolicy(loadString(IDS_PPAGEFULLSCREEN_SHOWNEVER), CAppSettings::HideFullscreenControlsPolicy::SHOW_NEVER); addHidePolicy(loadString(IDS_PPAGEFULLSCREEN_SHOWMOVED), CAppSettings::HideFullscreenControlsPolicy::SHOW_WHEN_CURSOR_MOVED); addHidePolicy(loadString(IDS_PPAGEFULLSCREEN_SHOHHOVERED), CAppSettings::HideFullscreenControlsPolicy::SHOW_WHEN_HOVERED); m_delaySpinner.SetRange32(0, 9); CorrectComboListWidth(m_fullScreenMonitorCtrl); CorrectComboListWidth(m_hidePolicy); CorrectComboBoxHeaderWidth(GetDlgItem(IDC_CHECK2)); CorrectComboBoxHeaderWidth(GetDlgItem(IDC_CHECK4)); ModesUpdate(); EnableToolTips(TRUE); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
BOOL CPPageFullscreen::OnInitDialog() { __super::OnInitDialog(); SetHandCursor(m_hWnd, IDC_COMBO1); AppSettings& s = AfxGetAppSettings(); m_launchfullscreen = s.fLaunchfullscreen; m_AutoChangeFullscrRes = s.AutoChangeFullscrRes; m_fSetDefault = s.AutoChangeFullscrRes.bApplyDefault; m_f_hmonitor = s.strFullScreenMonitor; m_iShowBarsWhenFullScreen = s.fShowBarsWhenFullScreen; m_nShowBarsWhenFullScreenTimeOut = s.nShowBarsWhenFullScreenTimeOut; m_nTimeOutCtrl.SetRange(-1, 10); m_fExitFullScreenAtTheEnd = s.fExitFullScreenAtTheEnd; m_fRestoreResAfterExit = s.fRestoreResAfterExit; CString str; m_iMonitorType = 0; CMonitor monitor; CMonitors monitors; CString strCurMon; monitor = monitors.GetNearestMonitor(AfxGetApp()->m_pMainWnd); monitor.GetName(strCurMon); m_iMonitorTypeCtrl.AddString(ResStr(IDS_FULLSCREENMONITOR_CURRENT)); m_MonitorDisplayNames.Add(_T("Current")); if (m_f_hmonitor == _T("Current")) { m_iMonitorType = m_iMonitorTypeCtrl.GetCount()-1; } for ( int i = 0; i < monitors.GetCount(); i++ ) { monitor = monitors.GetMonitor( i ); monitor.GetName(str); if (monitor.IsMonitor()) { DISPLAY_DEVICE displayDevice; ZeroMemory(&displayDevice, sizeof(displayDevice)); displayDevice.cb = sizeof(displayDevice); VERIFY(EnumDisplayDevices(str, 0, &displayDevice, 0)); if (str == strCurMon) { m_iMonitorTypeCtrl.AddString(str+_T(" - [") + ResStr(IDS_FULLSCREENMONITOR_CURRENT) +_T("] - ")+ displayDevice.DeviceString); } else { m_iMonitorTypeCtrl.AddString(str+_T(" - ")+ displayDevice.DeviceString); } m_MonitorDisplayNames.Add(str); if (m_f_hmonitor == str && m_iMonitorType == 0) { m_iMonitorType = m_iMonitorTypeCtrl.GetCount()-1; } } } if (m_iMonitorTypeCtrl.GetCount() > 2) { GetDlgItem(IDC_COMBO1)->EnableWindow(TRUE); } else { m_iMonitorType = 0; GetDlgItem(IDC_COMBO1)->EnableWindow(FALSE); } m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_DOUBLEBUFFER |LVS_EX_GRIDLINES|LVS_EX_BORDERSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_CHECKBOXES|LVS_EX_FLATSB); m_list.InsertColumn(COL_Z, ResStr(IDS_PPAGE_FS_CLN_ON_OFF), LVCFMT_LEFT, 60); m_list.InsertColumn(COL_VFR_F, ResStr(IDS_PPAGE_FS_CLN_FROM_FPS), LVCFMT_RIGHT, 60); m_list.InsertColumn(COL_VFR_T, ResStr(IDS_PPAGE_FS_CLN_TO_FPS), LVCFMT_RIGHT, 60); m_list.InsertColumn(COL_SRR, ResStr(IDS_PPAGE_FS_CLN_DISPLAY_MODE), LVCFMT_LEFT, 135); ModesUpdate(); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
BOOL CPPageOutput::OnInitDialog() { __super::OnInitDialog(); AppSettings& s = AfxGetAppSettings(); m_iDSVideoRendererType = s.iDSVideoRendererType; m_iRMVideoRendererType = s.iRMVideoRendererType; m_iQTVideoRendererType = s.iQTVideoRendererType; m_iAPSurfaceUsage = s.iAPSurfaceUsage; m_fVMRSyncFix = s.fVMRSyncFix; m_iDX9Resizer = s.iDX9Resizer; m_fVMR9MixerMode = s.fVMR9MixerMode; m_fVMR9MixerYUV = s.fVMR9MixerYUV; m_fD3DFullscreen = s.fD3DFullscreen; m_iEvrBuffers = s.iEvrBuffers-3; // Multi-Monitor code CString str; m_iMonitorType = 0; CMonitor monitor; CMonitors monitors; m_iMonitorTypeCtrl.AddString(ResStr(IDS_FULLSCREENMONITOR_CURRENT)); m_MonitorDisplayNames.Add(_T("Current")); if(s.f_hmonitor == _T("Current")) { m_iMonitorType = m_iMonitorTypeCtrl.GetCount()-1; } for ( int i = 0; i < monitors.GetCount(); i++ ) { monitor = monitors.GetMonitor( i ); monitor.GetName(str); if(monitor.IsMonitor()) { DISPLAY_DEVICE displayDevice; ZeroMemory(&displayDevice, sizeof(displayDevice)); displayDevice.cb = sizeof(displayDevice); VERIFY(EnumDisplayDevices(str, 0, &displayDevice, 0)); m_iMonitorTypeCtrl.AddString(str+_T(" - ")+displayDevice.DeviceString); m_MonitorDisplayNames.Add(str); if(s.f_hmonitor == str && m_iMonitorType == 0) { m_iMonitorType = m_iMonitorTypeCtrl.GetCount()-1; } } } //(m_iMonitorTypeCtrl.GetCount() > 2) ? {GetDlgItem(IDC_COMBO2)->EnableWindow(TRUE)} : GetDlgItem(IDC_COMBO2)->EnableWindow(FALSE); if(m_iMonitorTypeCtrl.GetCount() > 2) { GetDlgItem(IDC_COMBO2)->EnableWindow(TRUE); } else { m_iMonitorType = 0; GetDlgItem(IDC_COMBO2)->EnableWindow(FALSE); } m_AudioRendererDisplayNames.Add(_T("")); m_iAudioRendererTypeCtrl.AddString(_T("System Default")); m_iAudioRendererType = 0; BeginEnumSysDev(CLSID_AudioRendererCategory, pMoniker) { LPOLESTR olestr = NULL; if(FAILED(pMoniker->GetDisplayName(0, 0, &olestr))) continue; CStringW str(olestr); CoTaskMemFree(olestr); m_AudioRendererDisplayNames.Add(CString(str)); CComPtr<IPropertyBag> pPB; if(SUCCEEDED(pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void**)&pPB))) { CComVariant var; pPB->Read(CComBSTR(_T("FriendlyName")), &var, NULL); CString fstr(var.bstrVal); var.Clear(); if(SUCCEEDED(pPB->Read(CComBSTR(_T("FilterData")), &var, NULL))) { BSTR* pbstr; if(SUCCEEDED(SafeArrayAccessData(var.parray, (void**)&pbstr))) { fstr.Format(_T("%s (%08x)"), CString(fstr), *((DWORD*)pbstr + 1)); SafeArrayUnaccessData(var.parray); } } m_iAudioRendererTypeCtrl.AddString(fstr); } else { m_iAudioRendererTypeCtrl.AddString(CString(str)); } if(s.AudioRendererDisplayName == str && m_iAudioRendererType == 0) { m_iAudioRendererType = m_iAudioRendererTypeCtrl.GetCount()-1; } }