请教一下问题:
 我想做一个类似NVIDIA控制面板的软件,主要实现能创建自定义分辨率,手动设置活动像素、前沿、同步宽度、总像素、极性、刷新率等,例如自定义增加一个5760×1080.
注明:显卡是支持的,因为是在NVIDIA显卡驱动下设置,系统是WINDOWS谢谢各位了!

解决方案 »

  1.   

    获取和修改分辨率的代码如下
    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);
    }