?? 20000925002.htm
字號:
<HTML>
<HEAD>
<TITLE>全屏幕OpenGL程序</TITLE>
<META content="MSHTML 5.00.2314.1000" name=GENERATOR>
</HEAD>
<BODY aLink=#FF0000 bgColor=#ffffff leftMargin=0 link=#187800 topMargin=0
vLink=#990099>
<div align="center">
<table width="744" border="0" cellspacing="0" cellpadding="0" height="76">
<tr>
<td>
<p align="center"> <br>
<font size="3"><b>全屏幕OpenGL程序</b></font></p>
<p>其實在BCB中實現全屏幕OpenGL的原理是很簡單的,只要在窗口OpenGL程序的基礎上做一個小小的改動即可:只要將窗口屬性修改為WS_POPUP就可以了。</p>
<p>具體如下:</p>
<blockquote>
<ol>
<li>在窗口類的CreateParam()成員函數中加入如下語句:<br>
Params.Style=WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;<br>
將相應窗口修改成WS_POPUP型窗口,另兩個是為支持OpenGL為設的。
<li>仍在窗口類的CreateParam()成員函數,加入如下語句:<br>
ChangeResolution(800,600);<br>
Params.Width=800;<br>
Params.Height=600;<br>
Params.X=Params.Y=0;<br>
第一句將屏幕分辨率設定為800X600(可以是顯示卡支持的任意值)<br>
然后修改窗體大小使之占滿全屏。
<li>ChangeResolution()是一個自編的小函數,其原理如下:
<blockquote>
<ol>
<li>用WINAPI:EnumDisplaySettings()查詢并取得所需的顯示模式
<li>用WINAPI:ChangeDisplaySettings()修改顯示模式。 </li>
</ol>
</blockquote>
<li>ChangeResolution()的完整代碼:<br>
<br>
BOOL ChangeResolution(DWORD w, DWORD h) {<br>
DEVMODE devMode;<br>
LONG modeSwitch;<br>
LONG i;<br>
CHAR buf[256];<br>
i = 0;<br>
do {<br>
modeSwitch = EnumDisplaySettings(NULL, i, &devMode);<br>
i++;<br>
} while(( (devMode.dmBitsPerPel!=16)<br>
||(devMode.dmPelsWidth != w)<br>
||(devMode.dmPelsHeight != h) )<br>
&& (modeSwitch) );<br>
/* Okay see if we found a mode */<br>
if (!modeSwitch) { }<br>
else {<br>
modeSwitch = ChangeDisplaySettings(&devMode, 0);<br>
if (modeSwitch!=DISP_CHANGE_SUCCESSFUL)<br>
{<br>
//Might be running in Windows95, let's try without the hertz change<br>
devMode.dmBitsPerPel = 16;<br>
devMode.dmPelsWidth = w;<br>
devMode.dmPelsHeight = h;<br>
devMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;<br>
modeSwitch = ChangeDisplaySettings(&devMode, 0);<br>
}<br>
}<br>
return TRUE;<br>
}
<li><a
href="download/fullscreen.zip">樣本程序</a>
<li>說明:通常這個程序運行時會看到屏幕底部有道白線,這是任務欄造成的,如果你將它的總在最前面(always on
top)去掉或者將本程序窗口作成Always On Top型就不會再看到它了。</li>
</ol>
</blockquote>
</td>
</tr>
</table>
</div>
</BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -