勇芳软件工作室.汉化:  Device Contexts > Device Contexts Functions >

ChangeDisplaySettings

Previous pageReturn to chapter overviewNext page

描述

 

ChangeDisplaySettings功能将默认显示设备的设置更改为指定的图形模式。

 

要更改指定的显示设备的设置,请使用ChangeDisplaySettingsEx功能。

 

C++ 语法

 

LONG ChangeDisplaySettings(

__in LPDEVMODE lpDevMode,

__in DWORD dwflags

);

 

PowerBASIC 语法

 

FUNCTION ChangeDisplaySettingsA ( _

BYREF lpDevMode DEVMODEA, _

BYVAL dwflags AS DWORD _

) AS LONG

 

Unicode版本:

 

FUNCTION ChangeDisplaySettingsW ( _

BYREF lpDevMode DEVMODEW, _

BYVAL dwflags AS DWORD _

) AS LONG

 

参数

 

lpDevMode

 

[in]指向描述新图形模式的DEVMODE结构的指针。如果lpDevMode为NULL,则注册表中当前所有的值都将用于显示设置。对于lpDevMode参数传递NULL,对于dwFlags中参数传递0是在动态模式更改后返回默认模式的最简单方法。

 

dmsiz到dmsiz到成员必须初始化为DEVMODE结构的大小(以字节为单位)。dmDriverExtradmDriverExtra成员必须初始化,以指示DEVMODE结构之后的专用驱动程序数据的字节数。此外,您可以使用DEVMODE结构中的任何或所有以下成员。

 

会员

含义

dmBitsPerPel

每像素位数

dmPelsWidth

像素宽度

dmPelsHeight

像素高度

dmDisplayFlags

模式标志

dmDisplayFrequency

模式频率

dmPosition

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:设备位于多监视器配置中的位置

 

除了使用一个或多个前面的DEVMODE成员之外,还必须在dmFieldsno成员中设置以下一个或多个值来更改显示设置。

 

会员

含义

DM_BITSPERPEL

使用dmBitsPerPel值。

DM_PELSWIDTH

使用dmPelsWidth值。

DM_PELSHEIGHT

使用dmPelsHeight值。

DM_DISPLAYFLAGS

使用dmDisplayFlags值。

DM_DISPLAYFREQUENCY

使用dmDisplayFrequency值。

DM_POSITION

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:使用dmPosition值。

 

dwflags

 

[in]指示如何更改图形模式。此参数可以是以下值之一。

 

含义

0

当前屏幕的图形模式将被动态更改。

CDS_FULLSCREEN

这种模式本质上是暂时的。

 

Windows NT / 2000 / XP / Vista / Windows 7:如果您切换到另一台桌面,则不会重置此模式。

CDS_GLOBAL

这些设置将被保存在全局设置区域,以便它们将影响机器上的所有用户。否则,仅修改用户的设置。此标志仅在使用CDS_UPDATEREGISTRY标志指定时有效。

CDS_NORESET

设置将保存在注册表中,但不会生效。此标志仅在使用CDS_UPDATEREGISTRY标志指定时有效。

CDS_RESET

即使请求的设置与当前设置相同,应该更改设置。

CDS_SET_PRIMARY

该设备将成为主要设备。

CDS_TEST

系统测试是否可以设置所请求的图形模式。

CDS_UPDATEREGISTRY

当前屏幕的图形模式将被动态更改,图形模式将在注册表中更新。模式信息存储在USER配置文件中。

 

指定CDS_TEST允许应用程序确定哪些图形模式实际上是有效的,而不会导致系统更改为该图形模式。

 

如果指定了CDS_UPDATEREGISTRY,并且可以动态更改图形模式,则信息将存储在注册表中,并返回DISP_CHANGE_SUCCESSFUL。如果不可能动态更改图形模式,信息将存储在注册表中,并返回DISP_CHANGE_RESTART。

 

Windows NT / 2000 / XP/ VISTA / Windows 7的:如果指定了CDS_UPDATEREGISTRY,并且信息无法存储在注册表中,则图形模式不会更改,并返回DISP_CHANGE_NOTUPDATED。

 

返回值

 

ChangeDisplaySettings函数返回以下值之一。

 

含义

DISP_CHANGE_SUCCESSFUL

设置更改成功。

DISP_CHANGE_BADDUALVIEW

Windows XP / Vista / Windows 7:设置更改不成功,因为系统是DualView功能。

DISP_CHANGE_BADFLAGS

传入一组无效的标志。

DISP_CHANGE_BADMODE

不支持图形模式。

DISP_CHANGE_BADPARAM

传入无效参数。这可以包括无效标志或标志的组合。

DISP_CHANGE_FAILED

显示驱动程序在指定的图形模式下失败。

DISP_CHANGE_NOTUPDATED

Windows NT / 2000 / XP / Vista / Windows 7:无法将设置写入注册表。

DISP_CHANGE_RESTART

必须重新启动计算机才能使图形模式工作。

 

备注

 

为了确保传递给ChangeDisplaySettingsDEVMODE结构有效,仅包含显示驱动程序支持的值,请使用EnumDisplaySettings函数返回的DEVMODE.

 

当显示模式动态更改时,WM_DISPLAYCHANGE消息将发送到具有以下消息参数的所有正在运行的应用程序。

 

参数

含义

wParam中

每像素新位

LOWORD(lParam)

新像素宽度

HIWORD(lParam)

新像素高度

 

Windows 95/98 / Me:如果调用线程有任何窗口,ChangeDisplaySettings立即向他们发送WM_DISPLAYCHANGE消息(对于所有其他线程中的Windows,当线程可以接收非队列消息时,发送消息)。这可能会导致shell很快收到消息,并且可能会压缩图标。为了避免这个问题,请ChangeDisplaySettings通过调用没有Windows的线程来执行分辨率切换,例如新线程。

 

Windows 95/98 / Me:Microsoft Layer for Unicode支持ChangeDisplaySettingsW.

 

引用文件 #INCLUDE Once

 

WinUser.inc(包括Windows.inc)