📄 tutorial_01.htm
字号:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> DWORD dwExStyle; <font color="#ffffaa"> // 扩展窗口风格</font>
DWORD dwStyle; <font color="#ffffaa">// 窗口风格</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td background="Tutorial_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">下面的5行代码取得矩形的左上角和右下角的坐标值。我们将使用这些值来调整我们的窗口使得其上的绘图区的大小恰好是我们所需的分辨率的值。通常如果我们创建一个640x480的窗口,窗口的边框会占掉一些分辨率的值。</td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_files/r.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> RECT WindowRect; <font color="#ffffaa">// 取得矩形的左上角和右下角的坐标值</font>
WindowRect.left=(long)0; <font color="#ffffaa">// 将Left 设为 0</font>
WindowRect.right=(long)width; <font color="#ffffaa"> // 将Right 设为要求的宽度</font>
WindowRect.top=(long)0; <font color="#ffffaa">// 将Top 设为 0</font>
WindowRect.bottom=(long)height; <font color="#ffffaa">// 将Bottom 设为要求的高度</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td background="Tutorial_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">下
一行代码我们让全局变量fullscreen等于fullscreenflag。如果我们希望在全屏幕下运行而将fullscreenflag设为
TRUE,但没有让变量fullscreen等于fullscreenflag的话,fullscreen变量将保持为FALSE。当我们在全屏幕模式下
销毁窗口的时候,变量fullscreen的值却不是正确的TRUE值,计算机将误以为已经处于桌面模式而无法切换回桌面。上帝啊,但愿这一切都有意义。
就是一句话,fullscreen的值必须永远fullscreenflag的值,否则就会有问题。</td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_files/r.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> fullscreen=fullscreenflag; <font color="#ffffaa">// 设置全局全屏标志</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td background="Tutorial_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">下一部分的代码中,我们取得窗口的实例,然后定义窗口类。
<p>CS_HREDRAW
和 CS_VREDRAW
的意思是无论何时,只要窗口发生变化时就强制重画。CS_OWNDC为窗口创建一个私有的DC。这意味着DC不能在程序间共享。WndProc是我们程序
的消息处理过程。由于没有使用额外的窗口数据,后两个字段设为零。然后设置实例。接着我们将hIcon设为NULL,因为我们不想给窗口来个图标。鼠标指
针设为标准的箭头。背景色无所谓(我们在GL中设置)。我们也不想要窗口菜单,所以将其设为NULL。类的名字可以您想要的任何名字。出于简单,我将使用
"OpenG"。</p></td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_files/r.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> hInstance = GetModuleHandle(NULL); <font color="#ffffaa">// 取得我们窗口的实例</font>
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; <font color="#ffffaa">// 移动时重画,并为窗口取得DC</font>
wc.lpfnWndProc = (WNDPROC) WndProc; <font color="#ffffaa">// WndProc处理消息</font>
wc.cbClsExtra = 0; <font color="#ffffaa">// 无额外窗口数据</font>
wc.cbWndExtra = 0; <font color="#ffffaa">// 无额外窗口数据</font>
wc.hInstance = hInstance; <font color="#ffffaa">// 设置实例</font>
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); <font color="#ffffaa">// 装入缺省图标</font>
wc.hCursor = LoadCursor(NULL, IDC_ARROW); <font color="#ffffaa">// 装入鼠标指针</font>
wc.hbrBackground = NULL; <font color="#ffffaa">// GL不需要背景</font>
wc.lpszMenuName = NULL; <font color="#ffffaa">// 不需要菜单</font>
wc.lpszClassName = "OpenG"; <font color="#ffffaa">// 设定类名字</font>
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td background="Tutorial_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">现在注册类名字。如果有错误发生,弹出错误消息窗口。按下上面的OK按钮后,程序退出</td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_files/r.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (!RegisterClass(&wc)) <font color="#ffffaa">// 尝试注册窗口类</font>
{
MessageBox(NULL,"注册窗口失败","错误",MB_OK|MB_ICONEXCLAMATION);
return FALSE; <font color="#ffffaa">// 退出并返回FALSE</font>
}
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td background="Tutorial_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">查看程序应该在全屏模式还是窗口模式下运行。如果应该是全屏模式的话,我们将尝试设置全屏模式。</td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_files/r.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
<pre> if (fullscreen) <font color="#ffffaa">// 要尝试全屏模式吗?</font>
{
</pre>
</font>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td background="Tutorial_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">下
一部分的代码看来很多人都会有问题要问关于.......切换到全屏模式。在切换到全屏模式时,有几件十分重要的事您必须牢记。必须确保您在全屏模式下所
用的宽度和高度等同于窗口模式下的宽度和高度。最最重要的是要在创建窗口之前设置全屏模式。这里的代码中,您无需再担心宽度和高度,它们已被设置成与显示
模式所对应的大小。</td>
<td background="Tutorial_01_files/r.gif"><img src="Tutorial_01_files/r.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/bl.gif" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/bc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/br.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<font color="#aaffaa" size="3">
</font><pre><font color="#aaffaa" size="3"> DEVMODE dmScreenSettings; <font color="#ffffaa"> // 设备模式</font>
memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); <font color="#ffffaa">// 确保内存清空为零</font>
dmScreenSettings.dmSize=sizeof(dmScreenSettings); <font color="#ffffaa">// Devmode 结构的大小</font>
dmScreenSettings.dmPelsWidth = width; <font color="#ffffaa">// 所选屏幕宽度</font>
dmScreenSettings.dmPelsHeight = height; <font color="#ffffaa"> // 所选屏幕高度</font>
dmScreenSettings.dmBitsPerPel = bits; <font color="#ffffaa">// 每象素所选的色彩深度</font>
dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
</font></pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td><img src="Tutorial_01_files/tl.jpg" height="28" width="28"></td>
<td width="100%"><img src="Tutorial_01_files/tc.gif" height="28" width="100%"></td>
<td><img src="Tutorial_01_files/tr.gif" height="28" width="28"></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td background="Tutorial_01_files/l.gif"><img src="Tutorial_01_files/l.gif" height="28" width="28"></td>
<td valign="top" width="100%">上
面
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -