文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C++BuilderBCB中实现全屏幕OpenGL
精品推荐
特别推荐
·菜鸟入门 认识C#中的委托和事件
·WINDOWS下的动态鼠标光标控制
热点TOP10
·在 C++ Builder中利用串行通信控件编程
·用Builder C++设计串行口COM1或COM2的读写操作
·Windows多线程间同步事件的控制方法
·用WinSock控件编写网络聊天器
·在C++ Builder中进行DirectX编程(2)
·C++ Builder VCL库函数简介
·用C++ Builder3 制作记事本
·利用C++ Builder 5.0创建用户自己的网上聊天程序
·C++ Builder 中的自画功能
·C++Builder IDE使用技巧与快捷键
·C++ Builder下数据库报表Master/Detail关系功能的实现
·WINDOWS下的动态鼠标光标控制
·菜鸟入门 认识C#中的委托和事件
·QuickReport基本知识
·C++BUILDER中一些实现界面效果的技巧
·C#动态生成树型结构的Web程序设计
·利用C++ Builder开发动画DLL
·BCB中实现全屏幕OpenGL
·C++Builder注册表编程实例详解
·利用C++Builder遍历文件目录

BCB中实现全屏幕OpenGL

日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]



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

  具体如下:

  在窗口类的CreateParam()成员函数中加入如下语句:

  Params.Style=WS_POPUPWS_CLIPCHILDRENWS_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和Oracle结合构造C/S系统时千年问题

BCB中实现全屏幕OpenGL 相关文章:
·如何实现局域网打印机共享
·TCP/IP编程实现远程文件传输
·Visual C++ 实现数字化图像的分割
·ASP.NET购物车的实现及结算处理
·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
·用C语言实现Ping程序功能
·javascript+xml实现二级下拉菜单,不会被任何标签或元素遮住
·windows 2003服务器配置VPN实现各种网络环境VSS协同开发
·让Windows XP操作系统实现全速启动
·如何实现一个表格表头不动tbody区域用滚动条可以滚动
BCB中实现全屏幕OpenGL 相关软件:
·TCP-IP详解卷2:实现
·ASP.NET的网站新闻管理系统设计与实现
·内置对象实现超酷日历
·ASP.NET下MVC设计模式的实现
·使用关键字实现上传木马
·数据库系统实现
·TCP-IP详解卷二:实现
· JS+层实现分项多内容的提交
·实用-不间断滚动的实现方法
·三层交换机特点与实现分析

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot