vc++ 改变屏幕分辩率代码段

本文介绍了一个C++程序中用于更改显示器分辨率和颜色深度的方法。通过使用`ChangeDisplaySettings`函数,可以临时或永久地更改显示模式。文章提供了针对不同分辨率(如800x600、1024x768、1600x1200)的具体实现,并展示了如何调整窗口位置以适应新的显示设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void CChange_display_modeDlg::adulst_display(WORD x,WORD y)
{
 DEVMODE DevMd;
 DevMd.dmSize=sizeof(DevMd);
 DevMd.dmPelsWidth=x;         //水平像素
 DevMd.dmPelsHeight=y;        //垂直像素
 DevMd.dmBitsPerPel=32;         //32位真彩
 DevMd.dmDisplayFrequency = 75; //刷新率Hz
 DevMd.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;// | DM_DISPLAYFREQUENCY;// | DM_DISPLAYFLAGS;// | dmPosition;
 //EnumDisplaySettings(NULL,0,&DevMd);
 //DevMd.dmPelsWidth=x;         //水平像素
 //DevMd.dmPelsHeight=y; 
 long v=ChangeDisplaySettings(&DevMd,0); //临时修改设置
 if(v==DISP_CHANGE_SUCCESSFUL)
 {  
  ChangeDisplaySettings(&DevMd,CDS_UPDATEREGISTRY); //永久的修改设置
 }
 else
 { 
  MessageBox("不支持!");
  ChangeDisplaySettings(NULL,0);
 }
}

void CChange_display_modeDlg::OnBtn1024()
{
 // TODO: Add your control notification handler code here
 adulst_display(1024,768);

 HWND hWnd;
 hWnd=::GetDesktopWindow(); 
 CRect rect1;  
 ::GetWindowRect(hWnd,&rect1);
 CRect rect2;
 GetWindowRect(&rect2);
 
 int x=(rect1.Width() - rect2.Width())/2;
 int y=(rect1.Height() - rect2.Height())/2;
 MoveWindow(x,y,rect2.Width(),rect2.Height());
}

void CChange_display_modeDlg::OnBtn1600()
{
 // TODO: Add your control notification handler code here
 adulst_display(1600,1200);

 HWND hWnd;
 hWnd=::GetDesktopWindow(); 
 CRect rect1;  
 ::GetWindowRect(hWnd,&rect1);
 CRect rect2;
 GetWindowRect(&rect2);
 
 int x=(rect1.Width() - rect2.Width())/2;
 int y=(rect1.Height() - rect2.Height())/2;
 MoveWindow(x,y,rect2.Width(),rect2.Height());
}

void CChange_display_modeDlg::OnBtn800()
{
 // TODO: Add your control notification handler code here
 adulst_display(800,600);
 
 HWND hWnd;
 hWnd=::GetDesktopWindow(); 
 CRect rect1;  
 ::GetWindowRect(hWnd,&rect1);
 CRect rect2;
 GetWindowRect(&rect2);
 
 int x=(rect1.Width() - rect2.Width())/2;
 int y=(rect1.Height() - rect2.Height())/2;
 MoveWindow(x,y,rect2.Width(),rect2.Height());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值