请教一下问题:
我想做一个类似NVIDIA控制面板的软件,主要实现能创建自定义分辨率,手动设置活动像素、前沿、同步宽度、总像素、极性、刷新率等,例如自定义增加一个5760×1080.
注明:显卡是支持的,因为是在NVIDIA显卡驱动下设置,系统是WINDOWS谢谢各位了!
我想做一个类似NVIDIA控制面板的软件,主要实现能创建自定义分辨率,手动设置活动像素、前沿、同步宽度、总像素、极性、刷新率等,例如自定义增加一个5760×1080.
注明:显卡是支持的,因为是在NVIDIA显卡驱动下设置,系统是WINDOWS谢谢各位了!
http://blog.csdn.net/nat_myron/article/details/8502009
//检测当前分辨率
int Width = GetSystemMetrics(SM_CXSCREEN);
int Height = GetSystemMetrics(SM_CYSCREEN);
DEVMODE lpDevMode0;
lpDevMode0.dmBitsPerPel=32;
lpDevMode0.dmPelsWidth=Width;
lpDevMode0.dmPelsHeight=Height;
lpDevMode0.dmSize=sizeof(lpDevMode0);
lpDevMode0.dmFields =DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL;
//修改
DEVMODE lpDevMode;
lpDevMode.dmBitsPerPel=32;
lpDevMode.dmPelsWidth=1024;
lpDevMode.dmPelsHeight=768;
lpDevMode.dmSize=sizeof(lpDevMode);
lpDevMode.dmFields =DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL;
LONG result;
result=ChangeDisplaySettings(&lpDevMode,0);
if (result==DISP_CHANGE_SUCCESSFUL)
{
//MessageBox("修改成功!");
ChangeDisplaySettings(&lpDevMode,CDS_UPDATEREGISTRY);
// //使用CDS_UPDATEREGISTRY表示次修改是持久的,
// //并在注册表中写入了相关的数据
MessageBox("修改成功!还原");
if(IDOK)
{
ChangeDisplaySettings(&lpDevMode0,CDS_UPDATEREGISTRY);
}
}
else
{
//MessageBox("修改失败,恢复原有设置!");
ChangeDisplaySettings(NULL,0);
}