国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

全屏幕OpenGL程序

2019-09-06 23:34:00
字體:
供稿:網(wǎng)友

                    其實(shí)在BCB中實(shí)現(xiàn)全屏幕OpenGL的原理是很簡單的,只要在窗口OpenGL程序的基礎(chǔ)上做一個(gè)小小的改動即可:只要將窗口屬性修改為WS_POPUP就可以了。

具體如下:

在窗口類的CreateParam()成員函數(shù)中加入如下語句:
Params.Style=WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
將相應(yīng)窗口修改成WS_POPUP型窗口,另兩個(gè)是為支持OpenGL為設(shè)的。
仍在窗口類的CreateParam()成員函數(shù),加入如下語句:
ChangeResolution(800,600);
Params.Width=800;
Params.Height=600;
Params.X=Params.Y=0;
第一句將屏幕分辨率設(shè)定為800X600(可以是顯示卡支持的任意值)
然后修改窗體大小使之占滿全屏。
ChangeResolution()是一個(gè)自編的小函數(shù),其原理如下:
用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;
}
樣本程序
說明:通常這個(gè)程序運(yùn)行時(shí)會看到屏幕底部有道白線,這是任務(wù)欄造成的,如果你將它的總在最前面(always on top)去掉或者將本程序窗口作成Always On Top型就不會再看到它了。
上一篇:超星格式

下一篇:如何在BCB中使用DirectX

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 息烽县| 教育| 阿图什市| 灵山县| 敦化市| 吴堡县| 平顶山市| 哈尔滨市| 泰宁县| 荣昌县| 大庆市| 高阳县| 宾阳县| 朔州市| 静宁县| 固镇县| 香格里拉县| 河间市| 邹平县| 新兴县| 金秀| 宁海县| 宁乡县| 宜章县| 治县。| 德惠市| 曲周县| 甘孜| 普兰店市| 太原市| 鹤山市| 古交市| 商河县| 四平市| 辽源市| 兴和县| 阿拉善左旗| 枣阳市| 鄢陵县| 宿迁市| 东海县|