????为什么我无法改变显示器的分辨率!!???
我定义了下面的函数:
void changedisplaymode(void)
{
int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
int nFullHeight=GetSystemMetrics(SM_CYSCREEN);
bool bChanged=0;
if(nFullWidth!=1024 && nFullHeight!=728)
{
DEVMODE lpDevMode;
lpDevMode.dmBitsPerPel=8;
lpDevMode.dmPelsWidth=800;
lpDevMode.dmPelsHeight=600;
lpDevMode0dmDisplayFrequency=60;
lpDevMode.dmSize=sizeof(lpDevMode);
lpDevMode.dmFields=DM_PELSWIDTH|DM_PELSHEIGHT
|DM_BITSPERPEL|DM_DISPLAYFREQUENCY;
LONG result;
result=ChangeDisplaySettings(&lpDevMode,CDS_UPDATEREGISTRY);
返回的值确是: DISP_CHANGE_BADMODE
不知哪里有错,以该怎么做?
问题点数:50、回复次数:6Top
1 楼ygd(人生短暂,及时行乐。准备成熟中)回复于 2001-10-16 15:52:41 得分 30
设置DEVMODE结构成员变量不正确。
请看如下代码:
DEVMODE lpmode;
EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&lpmode);
lpmode.dmPelsWidth=640;lpmode.dmPelsHeight=480;
ChangeDisplaySettings(&lpmode,CDS_UPDATEREGISTRY);
首先获取显示器默认设置,然后再改变。
Top
2 楼Gu_c_h(Gu)回复于 2001-10-16 15:57:29 得分 10
該代碼在我的機器上通過,大概是你的機器不支持這種顯示模式,把刷新率降低,在試一次Top
3 楼a813(周)回复于 2001-10-16 15:57:58 得分 10
DISP_CHANGE_BADMODE指不支持该模式。
看你的参数设置800*600,256色,60HZ的数据。
你选一个使用控制面板可以配置的参数试一试
Top
4 楼hnxk(xk)回复于 2001-10-17 09:30:41 得分 0
好了!
总算能改分辨率了!
在我的程序中,启动时我将分辨率从800x600改为1024x768,结束时我又改回来.
可是程序每运行一次,我的桌面总是又点乱,比如说,任务兰的位置到了屏幕的
中部,而不在最底部了.怎样才能恢复桌面到程序运行前的状态??
Top
5 楼sanjiang()回复于 2001-10-17 09:34:44 得分 0
gzTop
6 楼hnxk(xk)回复于 2001-10-17 21:41:25 得分 0
好了,
买单.Top




