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

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

可以访问系统注册表HKEY_CURRENT_CONFIG\DISPLAY\SETINGS来获知当前的显示分辨率和颜色数。

但常用以下方法:

关键的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。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航