ChangeDisplaySettingsA 函数 (winuser.h)
ChangeDisplaySettings 函数将默认显示设备的设置更改为指定的图形模式。
若要更改指定显示设备的设置,请使用 ChangeDisplaySettingsEx 函数。
语法
LONG ChangeDisplaySettingsA(
[in] DEVMODEA *lpDevMode,
[in] DWORD dwFlags
);
参数
[in] lpDevMode
指向描述新图形模式的 DEVMODE 结构的指针。 如果 lpDevMode 为 NULL,注册表中当前的所有值都将用于显示设置。 在动态模式更改后,为 lpDevMode 参数传递 NULL,为 dwFlags 参数传递 0 是返回到默认模式的最简单方法。
DEVMODE 的 dmSize 成员必须初始化为 DEVMODE 结构的大小(以字节为单位)。 必须初始化 DEVMODE 的 dmDriverExtra 成员,以指示 DEVMODE 结构后面的专用驱动程序数据的字节数。 此外,还可以使用 DEVMODE 结构的以下任意或全部成员。
成员 | 含义 |
---|---|
dmBitsPerPel | 每像素位数 |
dmPelsWidth | 像素宽度 |
dmPelsHeight | 像素高度 |
dmDisplayFlags | 模式标志 |
dmDisplayFrequency | 模式频率 |
dmPosition | 设备在多监视器配置中的位置。 |
除了使用上述一个或多个 DEVMODE 成员外,还必须在 dmFields 成员中设置以下一个或多个值以更改显示设置。
值 | 含义 |
---|---|
DM_BITSPERPEL | 使用 dmBitsPerPel 值。 |
DM_PELSWIDTH | 使用 dmPelsWidth 值。 |
DM_PELSHEIGHT | 使用 dmPelsHeight 值。 |
DM_DISPLAYFLAGS | 使用 dmDisplayFlags 值。 |
DM_DISPLAYFREQUENCY | 使用 dmDisplayFrequency 值。 |
DM_POSITION | 使用 dmPosition 值。 |
[in] dwFlags
指示应如何更改图形模式。 此参数的取值可为下列值之一:
指定CDS_TEST允许应用程序确定哪些图形模式实际有效,而不会导致系统更改为该图形模式。
如果指定了CDS_UPDATEREGISTRY并且可以动态更改图形模式,则会将信息存储在注册表中,并返回DISP_CHANGE_SUCCESSFUL。 如果无法动态更改图形模式,则会将信息存储在注册表中,并返回DISP_CHANGE_RESTART。
如果指定了CDS_UPDATEREGISTRY,并且无法将信息存储在注册表中,则不会更改图形模式并返回DISP_CHANGE_NOTUPDATED。
返回值
ChangeDisplaySettings 函数返回以下值之一。
返回代码 | 说明 |
---|---|
|
设置更改成功。 |
|
设置更改失败,因为系统支持 DualView。 |
|
传入了一组无效的标志。 |
|
不支持图形模式。 |
|
传入了无效参数。 这可以包括无效标志或标志组合。 |
|
显示驱动程序未通过指定的图形模式。 |
|
无法将设置写入注册表。 |
|
必须重启计算机才能使图形模式正常工作。 |
注解
若要确保传递给 ChangeDisplaySettings 的DEVMODE 结构有效且仅包含显示驱动程序支持的值,请使用 EnumDisplaySettings 函数返回的 DEVMODE。
动态更改显示模式时, WM_DISPLAYCHANGE 消息将发送到具有以下消息参数的所有正在运行的应用程序。
参数 | 含义 |
---|---|
wParam | 每个像素的新位数 |
LOWORD(lParam) | 新的像素宽度 |
HIWORD(lParam) | 新的像素高度 |
DPI 虚拟化
此 API 不参与 DPI 虚拟化。 给定的输入始终以物理像素为单位,与调用上下文无关。注意
winuser.h 标头将 ChangeDisplaySettings 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
API 集 | ext-ms-win-ntuser-sysparams-ext-l1-1-1 (在 Windows 10 版本 10.0.14393 中引入) |