直接在程序中更改显示模式
可以访问系统注册表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。

|