ChangeDisplaySettings功能将显示设置更改为指定的图形模式。
LONG ChangeDisplaySettings(
LPDEVMODE 【lpDevMode】, | |
DWORD 【dwFlags中】 | |
); |
参数
【lpDevMode】
指向DEVMODE结构的指针,描述要切换到的图形模式。dmsiz到成员必须初始化为DEVMODE结构的大小(以字节为单位)。使用DEVMODE结构中的以下字段:
会员 | 含义 |
dmBitsPerPel | 每像素位数 |
dmPelsWidth | 像素宽度 |
dmPelsHeight | 像素高度 |
dmDisplayFlags | 模式标志 |
dmDisplayFrequency | 模式频率 |
除了在DEVMODE成员中的一个或多个之外设置值,您还必须在dmFieldsnobg-Latn成员中设置相应的标志。标志表示DEVMODE结构的哪些成员用于显示设置更改。如果dmFieldsnobg-Latn中未设置相应的位,显示设置将不会更改。设置一个或多个以下标志:
旗 | 含义 |
DM_BITSPERPEL | 使用dmBitsPerPel值。 |
DM_PELSWIDTH | 使用dmPelsWidth值。 |
DM_PELSHEIGHT | 使用dmPelsHeight值。 |
DM_DISPLAYFLAGS | 使用dmDisplayFlags值。 |
DM_DISPLAYFREQENCY | 使用dmDisplayFrequency值。 |
如果【lpDevMode】为NULL,则注册表中当前所有的值将用于显示设置。传递【lpDevMode】参数的空值是在动态模式更改后返回默认模式的最简单方法。
【dwFlags中】
指示如何更改图形模式。可能是以下之一:
旗 | 含义 |
0 | 当前屏幕的图形模式将被动态更改。 |
CDS_UPDATEREGISTRY | 当前屏幕的图形模式将被动态更改,图形模式将在注册表中更新。模式信息存储在USER配置文件中。 |
CDS_TEST | 系统测试是否可以设置所请求的图形模式。 |
如果指定了CDS_UPDATEREGISTRY,并且可以动态更改图形模式,则信息将存储在注册表中,并返回DISP_CHANGE_SUCCESSFUL。如果不可能动态更改图形模式,信息将存储在注册表中,并返回DISP_CHANGE_RESTART。
Windows NT:如果信息无法存储在注册表中,则图形模式不会更改,并返回DISP_CHANGE_NOTUPDATED。
指定CDS_TEST允许应用程序确定哪些图形模式实际上是有效的,而不会导致系统更改为该图形模式。
返回值
返回以下值之一:
值 | 含义 |
DISP_CHANGE_SUCCESSFUL | 设置更改成功。 |
DISP_CHANGE_RESTART | 必须重新启动计算机才能使图形模式工作。 |
DISP_CHANGE_BADFLAGS | 传入一组无效的标志。 |
DISP_CHANGE_FAILED | 显示驱动程序在指定的图形模式下失败。 |
DISP_CHANGE_BADMODE | 不支持图形模式。 |
DISP_CHANGE_NOTUPDATED | 仅Windows NT:无法将设置写入注册表。 |
备注
使用EnumDisplaySettings功能返回的DEVMODE可确保传递给ChangeDisplaySettings的DEVMODE有效,并且仅包含显示驱动程序支持的值。
当动态更改显示模式时,WM_DISPLAYCHANGE消息将发送到具有以下消息参数的所有正在运行的应用程序:
参数 | 含义 |
wParam中 | 每像素新位 |
LOWORD(lParam) | 新像素宽度 |
HIWORD(lParam) | 新像素高度 |
也可以看看