分享
 
 
 

程序中对屏幕显示模式的直接控制 (写于5年前,现在放在这里)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在Windows 95中,对显示模式的更改,我们知道一般是在控制面板中进行的:即“开始”菜单?设置?控制面板,双击“显示”,可以更改屏幕分辨率,显示的颜色数等。

但有时我们需要程序来控制显示模式,最常见的就是游戏程序。一般的应用程序也可能有这样的要求,例如,假设在程序中需要显示一幅图片,图片本来是16位颜色的,如果这时显示模式是设置在256色(即8位颜色)的话,则显示出来的图片就变得非常难看。再如一个窗口设计时是在800╳600的分辨率下进行的,那么当窗口在640╳480的分辨率下显示时,可能由于屏幕可显示的范围变小,而使窗口的某部分超出了屏幕的范围。这些问题都可以通过在程序中直接控制显示模式来解决。

下面以一个示例来说明如何直接控制屏幕显示模式。

假设这样一个程序,要求屏幕分辨率为800╳600,颜色为16位色。即要求本程序执行时,无论当时的屏幕是多少的分辨率及颜色数,本程序都会使屏幕模式变为800╳600,16位色。

笔者的程序是在C++ Builder 3环境下实现的,但编程原理对于使用Visusl C++、Visual Basic、Borland C++、Delphi等开发工具的读者同样适用。此程序没有具体的功能,只是显示一个窗口,同时改变屏幕模式。

对显示模式的直接修改,借助于DirectDraw技术来实现。首先运行Borland C++ Builder 3.0,新建一个工程,在Uni1.cpp的头部加入头文件包含说明,以使用DirectDraw技术:

#include <ddraw.h>

改变显示模式的代码放在Form1的OnShow事件中,代码如下:

void __fastcall TForm1::FormShow(TObject *Sender)

{

LPDIRECTDRAW lpdd; //声明一个DirectDraw对象指针

HRESULT ddrval;

ddrval = DirectDrawCreate( NULL, &lpdd, NULL ); //创建DirectDraw对象

if( ddrval != DD_OK )

{

ShowMessage("Error1!");

return;

}

HWND handledesk; //声明一个桌面窗口句柄

handledesk=GetDesktopWindow(); //获得桌面窗口句柄

ddrval=lpdd->SetCooperativeLevel(handledesk,

DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);

if( ddrval != DD_OK )

{

ShowMessage("Error2!");

return;

}

lpdd->SetDisplayMode(800,600,16);

//设置屏幕模式(800╳600分辨率,16位色)

}

编译运行,则无论您当时的屏幕显示模式如何,本程序执行时,显示模式都会变为800╳600,16位色;当本程序被关闭后,屏幕又自动恢复为原来的显示模式。

netying zrh1999@163.net 网站 [url=http://www.filesee.com]FileSee

1999年1月

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有