### 函数功能

该函数把缺省显示设备的设置改变为由lpDevMode设定的图形模式，要改变一个特定显示设备的设置，请使用ChangeDisplaySettingEx函数。

### 函数原型

LONG ChangeDisplaySettings (LPDEVMODE lpDevMode, DWORD dwflags)；

### 参数

lpDevMode：指向一个描述转变图表的DEVMODE的指针。DEVMODE的dmSize参数必须依DEVMODE结构的大小、字节进行初始化，dmDriveExtra参数必须初始化来显示DEVMODE随后的驱动数据的字节数，另外还可以选用以下

### 参数

dmBitsPerPel每个像素的位数，dmPelsWidth像素宽度，dmPelsHeight像度高度，dmDisplayFlage模式标志。
dmDisplayFrequency模式频率。
dmposition在多显示配置中设备的位置（适用于Windows 98、Windows NT 5.0及以后版本）。
除了设置好DEVMOD结构中诸多元素的值之外，还必须要正确地设置dmFields元素中的标志。这些标志表明了DEVMODE结构中哪个元素在改变显示设置时使用了。如果在dmFields中没有设置正确的位，那么显示设置将不会发生变化。请设置好以下的标志：
DM_BITSPERPEL使用dmBitsPerPel的值，DM_PELSWIDTH使用dmPelsWidth的值，
DM_PELSHEIGHT使用dmPelsHeight的值，DM_DISPLAYFLAGS使用dmDisplayFlags的值，
DM_DISPLAYFREQUENCY使用dmDisplayFrequency的值。
DM_POSITION使用fdmPosition的值（适用于Windows98、WindowsNT5.0）。
如果lpDevMode为空。那么显示设置就使用注册表中的所有当前值。在显示模式动态地调整之后要想再回到缺省的模式，最简单的办法就是把lpDevMode参数置为空，使dwFlags参数置为0。
dwflags：表明了图形模式如何改变，它可能是如下的几种形式中的一种：
0：表明当前屏幕的图形模式要动态地改变。
CDS_UPDATEREGISTRY：表明当前屏幕的图形模式会动态地变化，并且该图形模式会更新注册表。该模式信息存贮在用户档案中。
CDS_TEST：系统检测是否要设置被请求的图形模式。
CDS_FULLSCREEN：从本质上讲该模式是暂时的。
CDS_GLOBAL：该设置保存在全局设置区域内， 因此它们会影响所有的用户。该标志仅在与标志一起使用时才有效。CDS_SET_PRIMARY：该设备成为首要设备。
CDS_RESET：设置要改变，即使请求的设置与当前设置一样。CDS_NORESET：设置保存在注册表中，但是它不起作用，该标志只有与CDS_UPDATEREGISTRY标志一起使用时才有效。
指定CDS_TEST允许一个应用确定哪个图形模式真正的有效。但并不会使系统变为那个有效的图形模式。
如果CDS_UPDATEREGISTRY被指定并且它可能会动态地改变图形模式。则注册表中保存该信息并且返回DISP_CHANGE_SUCCESSFUL如果不可能使用图形模式动态地改变，则注册表中保存该信息并且返回DISP_CHANGE_RESTART。
Windows NT：如果指定了CDS_UPDATEREGISTRY并且在注册表中不能保存该信息，则图形模式不会改变，并且返回DISP_CHANGE_NOTUPDATERD。

### 返回值

ChangeDisplaySettings函数的返回值如下：
DISP_CHANGE_SUCCESSFUL：设备改变成功。
DISP_CHANGE_RESTART：为使图形模式生效计算机必须重新启动。
DISP_CHANGE_BADFLAGS：标志的无效设置被传送。
DISP_CHANGE_NOTUPDATED：在WindowsNT中不能把设置写入注册表。
DISP_CHANGE_BADPARA：一个无效的参数被传递。它可以包括一个无效的标志或标志的组合。
DISP_CHANGE_FAILED：指定图形模式的显示驱动失效。
DISP_CHANGE_ADMODE：不支持图形模式。
注释：为了保证传递给ChangeDisplaySetting的DEVMODE结构是有效的，并且仅包含显示驱动支持的值，可以使用由EnumDisplaySettings函数返回的DEVMODE。
当显示模式被动态地改变时，WM_DISPLAYCHANGE消息带着如下的消息参数传递给所有正在运行的应用：
wParam每像素点的新位数，LOWORD（lParam）新像素宽度，HIWORD（lParam）新像素高度。

### 速查

Windows NT：3.51及以上版本；Windows：95及以上版本；Windows CE：不支持；头文件：winuser.h；库文件：user32.lib；Unicode：在Windows NT上实现为Unicode和ANSI两种版本。