void CPPageFullscreen::ModesUpdate() { CMonitors monitors; m_fSetFullscreenRes = m_AutoChangeFullscrRes.bEnabled; CString sl2[MaxFpsCount]; dispmode dm, dmtoset[MaxFpsCount]; int i0; CString str, strCurMon, strModes; CString strCur; GetCurDispModeString(strCur); int iNoData = 0; for (int i=0; i<MaxFpsCount; i++) { dmtoset[i] = m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes; if (m_AutoChangeFullscrRes.dmFullscreenRes[i].fIsData == true) { iNoData++; } } if (!m_AutoChangeFullscrRes.bEnabled || m_AutoChangeFullscrRes.dmFullscreenRes[0].dmFSRes.freq <0 || m_AutoChangeFullscrRes.dmFullscreenRes[0].fIsData == false) { GetCurDispMode(dmtoset[0],m_f_hmonitor); for (int i=1; i<MaxFpsCount; i++) { dmtoset[i] = dmtoset[0]; } } m_list.DeleteAllItems(); m_dms.RemoveAll(); sl.RemoveAll(); for (int i=1; i<MaxFpsCount; i++) { sl2[i] = _T(""); } memset(m_iSeldm, -1, sizeof(m_iSeldm)); m_iSel=-1; for (int i = 0, m = 0, ModeExist = true; ; i++) { ModeExist = GetDispMode(i, dm, m_f_hmonitor); if (!ModeExist) { break; } if (dm.bpp != 32) { continue; // skip non 32bpp mode } int j = 0; while (j < m) { if (dm.bpp == m_dms[j].bpp && dm.dmDisplayFlags == m_dms[j].dmDisplayFlags && dm.freq == m_dms[j].freq && dm.fValid == m_dms[j].fValid && dm.size == m_dms[j].size) { break; } j++; } if (j < m) { continue; } m_dms.Add(dm); m++; } // sort display modes for (unsigned int j, i = 1; i < m_dms.GetCount(); i++) { dm = m_dms[i]; j = i - 1; while (j != -1 && m_dms[j].size.cx >= dm.size.cx && m_dms[j].size.cy >= dm.size.cy && m_dms[j].freq > dm.freq) { m_dms[j+1] = m_dms[j]; j--; } m_dms[j+1] = dm; } for (int i=0; (size_t) i<m_dms.GetCount(); i++) { strModes.Format(_T("[ %d ] @ %dx%d "), m_dms[i].freq, m_dms[i].size.cx, m_dms[i].size.cy); if (m_dms[i].dmDisplayFlags == DM_INTERLACED) { strModes += _T("i"); } else { strModes += _T("p"); } sl.Add(strModes); for (int n=0; n<MaxFpsCount; n++) { if (m_iSeldm[n] < 0 && dmtoset[n].fValid && m_dms[i].size == dmtoset[n].size && m_dms[i].bpp == dmtoset[n].bpp && m_dms[i].freq == dmtoset[n].freq && m_dms[i].dmDisplayFlags == dmtoset[n].dmDisplayFlags) { m_iSeldm[n]=i; sl2[n] = sl[i]; if (strCur == strModes) { i0 = i; } } } } for (int n=0; n<MaxFpsCount; n++) { if (m_AutoChangeFullscrRes.dmFullscreenRes[n].fIsData == true) { m_list.InsertItem(n, _T("")); CString ss = sl2[n]; m_list.SetItemText(n, COL_SRR, ss); m_list.SetCheck(n, m_AutoChangeFullscrRes.dmFullscreenRes[n].fChecked); if (n==0) { m_list.SetItemText(n, COL_Z, ResStr(IDS_PPAGE_FS_DEFAULT)); m_list.SetItemText(n, COL_VFR_F, ResStr(IDS_PPAGE_FS_OTHER)); m_list.SetItemText(n, COL_VFR_T, ResStr(IDS_PPAGE_FS_OTHER)); } else { n>9 ? ss.Format(_T("%d"), n) : ss.Format(_T("0%d"), n); m_list.SetItemText(n, COL_Z, ss); ss.Format(_T("%.3f"), m_AutoChangeFullscrRes.dmFullscreenRes[n].vfr_from) ; m_list.SetItemText(n, COL_VFR_F, ss); ss.Format(_T("%.3f"), m_AutoChangeFullscrRes.dmFullscreenRes[n].vfr_to) ; m_list.SetItemText(n, COL_VFR_T, ss); } } } if (m_list.GetItemCount() < 1 || iNoData == 0) { strModes.Format(_T("[ %d ] @ %dx%d "), dmtoset[0].freq, dmtoset[0].size.cx, dmtoset[0].size.cy); (dmtoset[0].dmDisplayFlags == DM_INTERLACED) ? strModes += _T("i") : strModes += _T("p"); int idx = 0; m_list.InsertItem(idx, ResStr(IDS_PPAGE_FS_DEFAULT)); m_list.SetItemText(idx, COL_VFR_F, ResStr(IDS_PPAGE_FS_OTHER)); m_list.SetItemText(idx, COL_VFR_T, ResStr(IDS_PPAGE_FS_OTHER)); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("01")); m_list.SetItemText(idx, COL_VFR_F, _T("23.500")); m_list.SetItemText(idx, COL_VFR_T, _T("23.981")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("02")); m_list.SetItemText(idx, COL_VFR_F, _T("23.982")); m_list.SetItemText(idx, COL_VFR_T, _T("24.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("03")); m_list.SetItemText(idx, COL_VFR_F, _T("24.500")); m_list.SetItemText(idx, COL_VFR_T, _T("25.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("04")); m_list.SetItemText(idx, COL_VFR_F, _T("29.500")); m_list.SetItemText(idx, COL_VFR_T, _T("29.981")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("05")); m_list.SetItemText(idx, COL_VFR_F, _T("29.982")); m_list.SetItemText(idx, COL_VFR_T, _T("30.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("06")); m_list.SetItemText(idx, COL_VFR_F, _T("49.500")); m_list.SetItemText(idx, COL_VFR_T, _T("50.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("07")); m_list.SetItemText(idx, COL_VFR_F, _T("59.500")); m_list.SetItemText(idx, COL_VFR_T, _T("59.945")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("08")); m_list.SetItemText(idx, COL_VFR_F, _T("59.946")); m_list.SetItemText(idx, COL_VFR_T, _T("60.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); } //ReindexListSubItem(); }
void CPPageFullscreen::ModesUpdate() { AppSettings& s = AfxGetAppSettings(); CMonitors monitors; m_fSetFullscreenRes = m_AutoChangeFullscrRes.bEnabled; if (m_AutoChangeFullscrRes.bEnabled == 2) m_fSetFullscreenRes = 2; CString sl2[MaxFpsCount]; dispmode dm, dmtoset[MaxFpsCount]; int i0; CString str, strCurMon, strModes; CString strCur; GetCurDispModeString(strCur); //CString strDevice = m_MonitorDeviceName[m_iMonitorType]; //CString MonitorName; //UINT16 MonitorHorRes, MonitorVerRes; //ReadDisplay(strDevice, &MonitorName, &MonitorHorRes, &MonitorVerRes); 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 ( s.strFullScreenMonitorID != m_f_hmonitorID) { m_AutoChangeFullscrRes.bEnabled = false; } int iNoData = 0; for (int i=0; i<MaxFpsCount; i++) { dmtoset[i] = m_AutoChangeFullscrRes.dmFullscreenRes[i].dmFSRes; if (m_AutoChangeFullscrRes.dmFullscreenRes[i].fIsData == true) { iNoData++; } } //if (!m_AutoChangeFullscrRes.bEnabled if (s.strFullScreenMonitorID != m_f_hmonitorID || m_AutoChangeFullscrRes.dmFullscreenRes[0].dmFSRes.freq <0 || m_AutoChangeFullscrRes.dmFullscreenRes[0].fIsData == false) { GetCurDispMode(dmtoset[0],m_f_hmonitor); for (int i=1; i<MaxFpsCount; i++) { dmtoset[i] = dmtoset[0]; } } m_list.DeleteAllItems(); m_dms.RemoveAll(); sl.RemoveAll(); for (int i=1; i<MaxFpsCount; i++) { sl2[i] = _T(""); } memset(m_iSeldm, -1, sizeof(m_iSeldm)); m_iSel=-1; for (int i = 0, m = 0, ModeExist = true; ; i++) { ModeExist = GetDispMode(i, dm, m_f_hmonitor); if (!ModeExist) { break; } if (dm.bpp != 32 || dm.size.cx < 720 || dm.size.cx < 480) { continue; // skip low resolution and non 32bpp mode } int j = 0; while (j < m) { if (dm.bpp == m_dms[j].bpp && dm.dmDisplayFlags == m_dms[j].dmDisplayFlags && dm.freq == m_dms[j].freq && dm.fValid == m_dms[j].fValid && dm.size == m_dms[j].size) { break; } j++; } if (j < m) { continue; } m_dms.Add(dm); m++; } // sort display modes for (unsigned int j, i = 1; i < m_dms.GetCount(); i++) { dm = m_dms[i]; j = i - 1; while (j != -1 && m_dms[j].size.cx >= dm.size.cx && m_dms[j].size.cy >= dm.size.cy && m_dms[j].freq > dm.freq) { m_dms[j+1] = m_dms[j]; j--; } m_dms[j+1] = dm; } for (int i=0; (size_t) i<m_dms.GetCount(); i++) { strModes.Format(_T("[ %d ] @ %dx%d "), m_dms[i].freq, m_dms[i].size.cx, m_dms[i].size.cy); if (m_dms[i].dmDisplayFlags == DM_INTERLACED) { strModes += _T("i"); } else { strModes += _T("p"); } sl.Add(strModes); for (int n=0; n<MaxFpsCount; n++) { if (m_iSeldm[n] < 0 && dmtoset[n].fValid && m_dms[i].size == dmtoset[n].size && m_dms[i].bpp == dmtoset[n].bpp && m_dms[i].freq == dmtoset[n].freq && m_dms[i].dmDisplayFlags == dmtoset[n].dmDisplayFlags) { m_iSeldm[n]=i; sl2[n] = sl[i]; if (strCur == strModes) { i0 = i; } } } } for (int n=0; n<MaxFpsCount; n++) { if (m_AutoChangeFullscrRes.dmFullscreenRes[n].fIsData == true) { m_list.InsertItem(n, _T("")); CString ss = sl2[n]; m_list.SetItemText(n, COL_SRR, ss); m_list.SetCheck(n, m_AutoChangeFullscrRes.dmFullscreenRes[n].fChecked); n+1>9 ? ss.Format(_T("%d"), n+1) : ss.Format(_T("0%d"), n+1); m_list.SetItemText(n, COL_Z, ss); ss.Format(_T("%.3f"), m_AutoChangeFullscrRes.dmFullscreenRes[n].vfr_from) ; m_list.SetItemText(n, COL_VFR_F, ss); ss.Format(_T("%.3f"), m_AutoChangeFullscrRes.dmFullscreenRes[n].vfr_to) ; m_list.SetItemText(n, COL_VFR_T, ss); } } if (m_list.GetItemCount() < 1 || iNoData == 0) { strModes.Format(_T("[ %d ] @ %dx%d "), dmtoset[0].freq, dmtoset[0].size.cx, dmtoset[0].size.cy); (dmtoset[0].dmDisplayFlags == DM_INTERLACED) ? strModes += _T("i") : strModes += _T("p"); int idx = 0; m_list.InsertItem(idx, _T("01")); m_list.SetItemText(idx, COL_VFR_F, _T("23.500")); m_list.SetItemText(idx, COL_VFR_T, _T("23.981")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("02")); m_list.SetItemText(idx, COL_VFR_F, _T("23.982")); m_list.SetItemText(idx, COL_VFR_T, _T("24.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("03")); m_list.SetItemText(idx, COL_VFR_F, _T("24.500")); m_list.SetItemText(idx, COL_VFR_T, _T("25.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("04")); m_list.SetItemText(idx, COL_VFR_F, _T("29.500")); m_list.SetItemText(idx, COL_VFR_T, _T("29.981")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("05")); m_list.SetItemText(idx, COL_VFR_F, _T("29.982")); m_list.SetItemText(idx, COL_VFR_T, _T("30.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("06")); m_list.SetItemText(idx, COL_VFR_F, _T("49.500")); m_list.SetItemText(idx, COL_VFR_T, _T("50.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("07")); m_list.SetItemText(idx, COL_VFR_F, _T("59.500")); m_list.SetItemText(idx, COL_VFR_T, _T("59.945")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); idx++; m_list.InsertItem(idx, _T("08")); m_list.SetItemText(idx, COL_VFR_F, _T("59.946")); m_list.SetItemText(idx, COL_VFR_T, _T("60.499")); m_list.SetItemText(idx, COL_SRR, strModes); m_iSeldm[idx] = i0; m_list.SetCheck(idx, 1); } ReindexListSubItem(); }