当前位置:编程学习 > C/C++ >>

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

 

 

    可以访问系统注册表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。

 

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,