首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 全屏幕OpenGL程序
【标  题】:全屏幕OpenGL程序
【关键字】:程序,屏幕,OpenGL,OpenGL
【来  源】:网络

全屏幕OpenGL程序

其实在BCB中实现全屏幕OpenGL的原理是很简单的,只要在窗口OpenGL程序的基础上做一个小小的改动即可:只要将窗口属性修改为WS_POPUP就可以了。

具体如下:

在窗口类的CreateParam()成员函数中加入如下语句:
Params.Style=WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
将相应窗口修改成WS_POPUP型窗口,另两个是为支持OpenGL为设的。
仍在窗口类的CreateParam()成员函数,加入如下语句:
ChangeResolution(800,600);
Params.Width=800;
Params.Height=600;
Params.X=Params.Y=0;
第一句将屏幕分辨率设定为800X600(可以是显示卡支持的任意值)
然后修改窗体大小使之占满全屏。
ChangeResolution()是一个自编的小函数,其原理如下:
用WINAPI:EnumDisplaySettings()查询并取得所需的显示模式
用WINAPI:ChangeDisplaySettings()修改显示模式。
ChangeResolution()的完整代码:

BOOL ChangeResolution(DWORD w, DWORD h) {
DEVMODE devMode;
LONG modeSwitch;
LONG i;
CHAR buf[256];
i = 0;
do {
modeSwitch = EnumDisplaySettings(NULL, i, &devMode);
i++;
} while(( (devMode.dmBitsPerPel!=16)
||(devMode.dmPelsWidth != w)
||(devMode.dmPelsHeight != h) )
&& (modeSwitch) );
/* Okay see if we found a mode */
if (!modeSwitch) { }
else {
modeSwitch = ChangeDisplaySettings(&devMode, 0);
if (modeSwitch!=DISP_CHANGE_SUCCESSFUL)
{
//Might be running in Windows95, let's try without the hertz change
devMode.dmBitsPerPel = 16;
devMode.dmPelsWidth = w;
devMode.dmPelsHeight = h;
devMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
modeSwitch = ChangeDisplaySettings(&devMode, 0);
}
}
return TRUE;
}
样本程序
说明:通常这个程序运行时会看到屏幕底部有道白线,这是任务栏造成的,如果你将它的总在最前面(always on top)去掉或者将本程序窗口作成Always On Top型就不会再看到它了。
在C++Builder中实现快速动画:【上一篇】
如何在BCB中使用DirectX:【下一篇】
【相关文章】
  • 屏幕抓取及回传
  • 用BCB编制OpenGL应用程序
  • 图片反色的一段程序
  • 利用CB开发特殊的屏幕显示效果
  • Win 95/NT下OpenGL编程原理
  • 怎样用代码来最小化或恢复程序
  • 在应用程序中使用热键的一段代码
  • 确定一个应用程序是否没有响应
  • 读取其他应用程序中ListView中的内容
  • 10分钟完成一个USB驱动程序
  • 【随机文章】
  • RFC793中文翻译一(dlmu2001)
  • HDR粗解
  • 架构设计的方法学
  • 条件表达式的语法
  • Webmin的安装
  • 怕~~
  • 中兴通讯城域光网络解决方案
  • CRM逐鹿2003热点--保险行业的CRM应用新的出发点
  • 讨论Web IM技术的实现过程
  • del 删除指定文件
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.