调整屏幕的分辨率

调整屏幕的分辨率,在开始的时候进行调整并记录原始的分辨率,在程序退出的时候再调整到原始的状态

 

 结束时调整:
 if ( m_bChangeDisplay )
 {
  DEVMODE dm;

  memset( &dm, 0, sizeof(DEVMODE) );
  dm.dmSize = sizeof(DEVMODE);
  dm.dmFields = DM_PELSHEIGHT | DM_PELSWIDTH | DM_DISPLAYFREQUENCY;
  dm.dmPelsHeight = m_iSysHeight;
  dm.dmPelsWidth  = m_iSysWidth;
  dm.dmDisplayFrequency = m_iFrequency;

  ChangeDisplaySettings( &dm, CDS_UPDATEREGISTRY );
 }


启动时调整:
 // 调整分辩率
 m_iSysWidth  = GetSystemMetrics( SM_CXSCREEN );
 m_iSysHeight = GetSystemMetrics( SM_CYSCREEN );
 if ( m_iSysWidth != SYSCR_WIDTH || m_iSysHeight != SYSCR_HEIGHT )
 //if ( false )
 {
  DEVMODE dm;
  long lRet;

  memset( &dm, 0, sizeof(DEVMODE) );
  dm.dmSize = sizeof(DEVMODE);
  dm.dmFields = DM_PELSHEIGHT | DM_PELSWIDTH | DM_DISPLAYFREQUENCY;
  EnumDisplaySettings( NULL, ENUM_CURRENT_SETTINGS, &dm );
  m_iFrequency = dm.dmDisplayFrequency;

  dm.dmPelsHeight = SYSCR_HEIGHT;
  dm.dmPelsWidth  = SYSCR_WIDTH;

  lRet = ChangeDisplaySettings( &dm, CDS_TEST );
  if ( lRet != DISP_CHANGE_SUCCESSFUL )
  {
   if ( dm.dmDisplayFrequency <= 60 )
    bRet = false;
   else
   {
    dm.dmDisplayFrequency = 60;
    lRet = ChangeDisplaySettings( &dm, CDS_TEST );
    if ( lRet != DISP_CHANGE_SUCCESSFUL )
     bRet = false;
    else
    {
     lRet = ChangeDisplaySettings( &dm, CDS_UPDATEREGISTRY );
     if ( lRet != DISP_CHANGE_SUCCESSFUL )
      bRet = false;
     else
      m_bChangeDisplay = true;
    }
   }
  }
  else
  {
   lRet = ChangeDisplaySettings( &dm, CDS_UPDATEREGISTRY );
   if ( lRet != DISP_CHANGE_SUCCESSFUL )
    bRet = false;
   else
    m_bChangeDisplay = true;
  }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值