void CPPageFullscreen::OnUpdateSetFullscreenRes() { CMonitor curmonitor; CMonitors monitors; CString strCurMon; curmonitor = monitors.GetNearestMonitor(AfxGetApp()->m_pMainWnd); curmonitor.GetName(strCurMon); if (m_iMonitorTypeCtrl.GetCurSel() == 0) { m_iMonitorTypeCtrl.SetCurSel(iCurMon); m_f_hmonitor = strCurMon; } SetModified(); }
void CPPageFullscreen::OnUpdateFullScrCombo() { CMonitors monitors; CMonitor curmonitor; CString str, strCurMonID, strCurMon; str = m_MonitorDisplayNames[m_iMonitorTypeCtrl.GetCurSel()]; if (str.GetLength() == 14) { m_f_hmonitor = str.Left(7); } if (str.GetLength() == 19) { m_f_hmonitor = str.Left(12); } strCurMonID = str.Right(7); curmonitor = monitors.GetNearestMonitor(AfxGetApp()->m_pMainWnd); curmonitor.GetName(strCurMon); if (m_f_hmonitor == _T("Current") && m_AutoChangeFullscrRes.bEnabled > 0) { m_f_hmonitor = strCurMon; } if (m_f_hmonitor != _T("Current") && m_f_hmonitor != strCurMon) { m_AutoChangeFullscrRes.bEnabled = false; } ModesUpdate(); SetModified(); }
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 CPPageFullscreen::OnApply() { UpdateData(); AppSettings& s = AfxGetAppSettings(); m_AutoChangeFullscrRes.bEnabled = !!m_fSetFullscreenRes; if (m_fSetFullscreenRes == 2) m_AutoChangeFullscrRes.bEnabled = 2; for (int i = 0; i < MaxFpsCount; i++) { int n = m_iSeldm[i]; if (n >= 0 && (size_t)n < m_dms.GetCount() && i < m_list.GetItemCount()) { m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes = m_dms[n]; m_AutoChangeFullscrRes.dmFullscreenRes[i].fChecked = !!m_list.GetCheck(i); m_AutoChangeFullscrRes.dmFullscreenRes[i].fIsData = true; m_AutoChangeFullscrRes.dmFullscreenRes[i].vfr_from = wcstod(m_list.GetItemText(i, COL_VFR_F), NULL); m_AutoChangeFullscrRes.dmFullscreenRes[i].vfr_to = wcstod(m_list.GetItemText(i, COL_VFR_T), NULL); } else { m_AutoChangeFullscrRes.dmFullscreenRes[i].fIsData = false; m_AutoChangeFullscrRes.dmFullscreenRes[i].vfr_from = 0; m_AutoChangeFullscrRes.dmFullscreenRes[i].vfr_to = 0; m_AutoChangeFullscrRes.dmFullscreenRes[i].fChecked = 0; m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes.bpp = 0; m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes.dmDisplayFlags = 0; m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes.freq = 0; m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes.fValid = 0; m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes.size = 0; } } m_AutoChangeFullscrRes.bApplyDefault = !!m_fSetDefault; m_AutoChangeFullscrRes.bSetGlobal = !!m_fSetGlobal; s.AutoChangeFullscrRes = m_AutoChangeFullscrRes; s.fLaunchfullscreen = !!m_launchfullscreen; CString str; CString strCurFSMonID; CString strCurMon; str = m_MonitorDisplayNames[m_iMonitorType]; if (str.GetLength() == 14) { m_f_hmonitor = str.Left(7); } if (str.GetLength() == 19) { m_f_hmonitor = str.Left(12); } m_f_hmonitorID = str.Right(7); if (m_AutoChangeFullscrRes.bEnabled > 0 && m_f_hmonitor == _T("Current")) { CMonitors monitors; CMonitor curmonitor; curmonitor = monitors.GetNearestMonitor(AfxGetApp()->m_pMainWnd); curmonitor.GetName(strCurMon); m_f_hmonitor = strCurMon; } if (m_AutoChangeFullscrRes.bEnabled == false && m_f_hmonitor == _T("Current")) { m_f_hmonitor = _T("Current"); } s.strFullScreenMonitor = m_f_hmonitor; s.strFullScreenMonitorID = m_f_hmonitorID; s.fShowBarsWhenFullScreen = !!m_iShowBarsWhenFullScreen; s.nShowBarsWhenFullScreenTimeOut = m_nShowBarsWhenFullScreenTimeOut; s.fExitFullScreenAtTheEnd = !!m_fExitFullScreenAtTheEnd; s.fExitFullScreenAtFocusLost = !!m_fExitFullScreenAtFocusLost; s.fRestoreResAfterExit = !!m_fRestoreResAfterExit; return __super::OnApply(); }
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_fSetGlobal = s.AutoChangeFullscrRes.bSetGlobal; m_f_hmonitor = s.strFullScreenMonitor; m_f_hmonitorID = s.strFullScreenMonitorID; m_iShowBarsWhenFullScreen = s.fShowBarsWhenFullScreen; m_nShowBarsWhenFullScreenTimeOut = s.nShowBarsWhenFullScreenTimeOut; m_nTimeOutCtrl.SetRange(-1, 10); m_fExitFullScreenAtTheEnd = s.fExitFullScreenAtTheEnd; m_fExitFullScreenAtFocusLost = s.fExitFullScreenAtFocusLost; m_fRestoreResAfterExit = s.fRestoreResAfterExit; CString str; m_iMonitorType = 0; CMonitor curmonitor; CMonitors monitors; CString strCurMon; m_iMonitorTypeCtrl.AddString(ResStr(IDS_FULLSCREENMONITOR_CURRENT)); m_MonitorDisplayNames.Add(_T("Current")); m_MonitorDeviceName.Add(_T("Current")); curmonitor = monitors.GetNearestMonitor(AfxGetApp()->m_pMainWnd); curmonitor.GetName(strCurMon); if(m_f_hmonitor.IsEmpty()) { m_f_hmonitor = _T("Current"); m_iMonitorType = 0; } DISPLAY_DEVICE dd; dd.cb = sizeof(dd); DWORD dev = 0; // device index int id = 0; CString str2; CString DeviceID; CString strMonID; while (EnumDisplayDevices(0, dev, &dd, 0)) { DISPLAY_DEVICE ddMon; ZeroMemory(&ddMon, sizeof(ddMon)); ddMon.cb = sizeof(ddMon); DWORD devMon = 0; while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0)) { if (ddMon.StateFlags & DISPLAY_DEVICE_ACTIVE && !(ddMon.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER)) { DeviceID.Format (L"%s", ddMon.DeviceID); strMonID = DeviceID = DeviceID.Mid (8, DeviceID.Find (L"\\", 9) - 8); str.Format(L"%s", ddMon.DeviceName); str = str.Left(12); if (str == strCurMon) { m_iMonitorTypeCtrl.AddString(str.Mid(4, 7) + _T("( ") + str.Right(1) + _T(" ) ") + _T("- [id: ") + DeviceID + _T(" *") + ResStr(IDS_FULLSCREENMONITOR_CURRENT) + _T("] - ") + ddMon.DeviceString); m_MonitorDisplayNames[0] = _T("Current") + strMonID; m_MonitorDeviceName[0] = str; if(m_f_hmonitor == _T("Current") && m_AutoChangeFullscrRes.bEnabled > 0) { m_iMonitorType = m_iMonitorTypeCtrl.GetCount()-1; m_f_hmonitor = strCurMon; } iCurMon = m_iMonitorTypeCtrl.GetCount()-1; } else { m_iMonitorTypeCtrl.AddString(str.Mid(4, 7) + _T("( ") + str.Right(1) + _T(" ) ") + _T("- [id: ") + DeviceID + _T("] - ") + ddMon.DeviceString); } m_MonitorDisplayNames.Add(str + strMonID); m_MonitorDeviceName.Add(str); if(m_iMonitorType == 0 && m_f_hmonitor == str) { m_iMonitorType = m_iMonitorTypeCtrl.GetCount()-1; } if (m_f_hmonitorID == strMonID && m_f_hmonitor != _T("Current")) { id = m_iMonitorType = m_iMonitorTypeCtrl.GetCount()-1; str2 = str; } } devMon++; ZeroMemory(&ddMon, sizeof(ddMon)); ddMon.cb = sizeof(ddMon); } ZeroMemory(&dd, sizeof(dd)); dd.cb = sizeof(dd); dev++; } if(m_iMonitorTypeCtrl.GetCount() > 2) { if (m_MonitorDisplayNames[m_iMonitorType] != m_f_hmonitor + m_f_hmonitorID) { if ( id > 0 ) { m_iMonitorType = id; m_f_hmonitor = str2; } } GetDlgItem(IDC_COMBO1)->EnableWindow(TRUE); } else { if(m_AutoChangeFullscrRes.bEnabled == false) { m_iMonitorType = 0; } else { m_iMonitorType = 1; } GetDlgItem(IDC_COMBO1)->EnableWindow(FALSE); } if (m_AutoChangeFullscrRes.bEnabled == false && (m_MonitorDisplayNames[m_iMonitorType]).Left(7) == _T("Current")){ m_f_hmonitor = _T("Current"); } 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; }
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; } }