vc屏幕分辨率陈
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连起来
1定义两变量,用来保存原来的屏幕分辨率
int SM_CXSCREEN_x;
int SM_CYSCREEN_y;
2在初始化里OnInitial
void CPowerControlView::OnInitialUpdate()
{
//保存原始屏幕分辨率,便于退出后还原
SM_CXSCREEN_x=GetSystemMetrics(SM_CXSCREEN);
SM_CYSCREEN_y=GetSystemMetrics(SM_CYSCREEN);
if(SM_CXSCREEN!=1280||SM_CYSCREEN!=800)
{
//将屏幕设置成1280*800
DEVMODE DevMode; //屏幕信息结构体
EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&DevMode); //获取当前的数据DevMode.dmPelsWidth = 1280; //修改成你想要的分辨率
DevMode.dmPelsHeight = 800;
ChangeDisplaySettings(&DevMode, CDS_UPDATEREGISTRY); //设置生效
}
3退出时还原,我把它放在Onclose里没成功。
放在MainFrame的OnClose里也不成功。
在原因在上面两句
if(SM_CXSCREEN_x!=1280||SM_CYSCREEN_y!=800)
{
//将屏幕设置还原
DEVMODE DevMode; //屏幕信息结构体
EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&DevMode); //获取当前的数据DevMode.dmPelsWidth = SM_CXSCREEN_x; //修改成你想要的分辨率
DevMode.dmPelsHeight =SM_CYSCREEN_y;
ChangeDisplaySettings(&DevMode, CDS_UPDATEREGISTRY); //设置生效
}
参考资料:
DEVMODE DevMode; //屏幕信息结构体
EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&DevMode); //获取当前的数据 DevMode.dmPelsWidth = 1440; //修改成你想要的分辨率
DevMode.dmPelsHeight = 900;
ChangeDisplaySettings(&DevMode, CDS_UPDATEREGISTRY); //设置生效
void 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_PELSWIDT|DM_PELSHEIGHT;
long v=ChangeDisplaySettings(&DevMd,0); //临时修改设置
if(v==DISP_CHANGE_SUCCESSFUL)
{
ChangeDisplaySettings(&DevMd,CDS_UPDATEREGISTRY); //永久的修改设置
}
else
{
MessageBox("不支持!");
ChangeDisplaySettings(NULL,0);
}
调用时输入x,y,比如1024,768就可以设置分辨率了,VC6下通过,希望对你有帮助。
vc++ 获取屏幕分辨率
GetSystemMetrics(SM_CXSCREEN);
GetSystemMetrics(SM_CYSCREEN);。