用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧Visual C++

直接在程序中更改显示模式

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 20:32:29

直接在程序中更改显示模式

    可以访问系统注册表HKEY_CURRENT_CONFIGDISPLAYSETINGS来获知当前的显示分辨率和颜色数。
    但常用以下方法:
    关键的API函数是EnumDisplaySettings和ChangeDisplaySettings。前者用来获得当前显示驱动所支持的所有显示模式,而后者用来改变显示模式。如果有个程序改变了显示模式, 则Windows会向所有正在运行的程序发送WM_DISPLAYCHANGE消息。获得当前显示模式可以使用下面的函数,它比访问注册表可靠。
Bool CVideoModes :: GetCurrentVideoSettings(DEVMODE *devmode)
{
HWND hwndDesktop=GetDesktopWindow();
HDC hdc=GetDC(hwndDesktop);
devmode -> dmSize =sizeof(DEVMODE);
devmode -> dmBitsPerPel=GetDeviceCaps(hdc,BITSPIXEL);
devmode -> dmPelsWidth=GetSystemMetrics(SM_CXSCREEN);
devmode -> dmPelsHeight=GetSystemMetrics(SM_CYSCREEN);
devmode -> dmFields=DM_BITSPERPEL DM_PELSWIDTH DM_PELSHEIGHT;
return TRUE;
}
    下面的代码展示了如何使用EnumDisplaySettings获得当前支持的所有显示模式:
int modenum,done;
DEVMODE devmode;
done=0;
modenum=0;
do
    {
     done=!EnumDisplaySettings(NULL,modenum,&devmode);
     AddToList(&devmode);
     modenum++;
    }while (!done);
    设置显示模式的方法如下:
    rc = ChangeDisplaySettings(&devmodeCDS_FULLSCREEN));这里的devmode就
是前面使用EnumDisplaySettings获得的。
    如果设置正常,返回值DISP_CHANGE_SUCCESSFUL。


Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:1,546.87500 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号