由于工作需要,我需要制作一个小工具来更改系统分辨率。
小工具需要支持多显示器,每个显示器要能分别设置分辨率
功能很简单,由于不需要做的好看,只要功能可用即可,使用了MFC(只是为了方便)
乱七八糟的逻辑不说,只说几个关键函数:
1.枚举系统显示器
void CDisplaySettingsDlg::FillDeviceCombo()
{
m_comboDevices.Clear();
m_comboDevices.ResetContent();
DWORD dwAdaptorIndex = 0;
DISPLAY_DEVICE ddv;
ZeroMemory(&ddv, sizeof(DISPLAY_DEVICE));
ddv.cb = sizeof(DISPLAY_DEVICE);
while (EnumDisplayDevices(NULL, dwAdaptorIndex++, &ddv, 0))
{
if (!(ddv.StateFlags&DISPLAY_DEVICE_MIRRORING_DRIVER)
&& (ddv.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP))
{
m_comboDevices.AddString(ddv.DeviceName);
}
ZeroMemory(&ddv, sizeof(DISPLAY_DEVICE));
ddv.cb = sizeof(DISPLAY_DEVICE);
}
m_comboDevices.SetCurSel(0);
}
2.枚举显示器支持的分辨率
void CDisplaySettingsDlg::RefreshSettingsCombo()
{
ClearSettingsCombo();
CStr