在VC中修改显示器的分辩率和色彩
在日常的程序开发中,有时我们想让自己编写的程序运行在显示器一定的分辨率和色彩数目下。如何让程序自动修改当前的显示器设置呢?这首先得从显示器的工作原理谈起。
一、相关原理
我们知道,显示器所显示的内容对应于显存,在显示器上最小的单位是象素(Pixel,这里仅考虑逻辑象素),显存的最小的单位是位(Bits)。 显示器工作的特征主要体现在色彩数和分辨率两方面。显示器所显示的色彩的数目取决于单位象素所使用的显存的位数(Bits)。在显存中,如果8位显存(即一个向象素使用了一字节的显存)对应于显示器上的一个象素,那么显示器所显示的色彩数目为28=256色;同样,如果当前的色彩为16位,那么显示器所显示的色彩数目为216=65536种色彩。显示器的分辨率指的是水平分辨率和垂直分辨率,经常所说的800X600,就是指在水平方面上所显示的象素为800个,在垂直方面上所显示的象素为600个。
在VC中提供了修改显示设备(如显示器、打印机等等,本文只就显示器而言)属性的函数:ChangeDisplaySettings,该函数能够按照你的需要对显示设备作出相应的修改。其函数申明如下:
LONG ChangeDisplaySettings(
LPDEVMODE lpDevMode,
DWORD dwflags
);
其参数的含义如下:
lpDevMode:一个指向DEVMODE数据结构的指针,DEVMODE的数据结构描述了欲设定显示器的各类属性值。通常情况下使用到的参数有:
dmSize:所用DEVMODE数据结构的大小ÿ