|
|
Procedure glKillWnd(Fullscreen: Boolean);
Begin
//在KillGLWindow()中所作的第一件事是检查是否处于全屏模式。
//如果是,要切换回桌面。本应在禁用全屏模式前先销毁窗口,
//但在某些显卡上这么做可能会使得桌面崩溃。所以还是先禁用全屏模式。
//这将防止桌面出现崩溃,并在Nvidia和3dfx显卡上都工作的很好!
If Fullscreen Then // 处于全屏模式吗?
Begin
// 使用ChangeDisplaySettings(NULL,0)回到原始桌面。
// 将NULL作为第一个参数,
// 0作为第二个参数传递强制Windows使用当前存放在注册表中的值
// (缺省的分辨率、色彩深度、刷新频率,等等)来有效的恢复我原始桌面。
// 换回桌面后,还要使得鼠标指针重新可见。
ChangeDisplaySettings(devmode(Nil^), 0); // 是的话,切换回桌面
ShowCursor(True); //显示鼠标
End;
//是否拥有着色描述表(hRC)。
If h_RC > 0 Then
//看我们能否释放它(将 hRC从hDC分开)。
If (Not wglMakeCurrent(h_DC, 0)) Then
MessageBox(0, 'DC和RC无法被释放!', '错误', MB_OK Or
MB_ICONERROR);
// 能否删除着色描述表
If (Not wglDeleteContext(h_RC)) Then
Begin
MessageBox(0, '删除着色描述表失败!', '错误', MB_OK Or
MB_ICONERROR);
h_RC := 0;
End;
//是否存在设备描述表,如果有尝试释放它。
If ((h_DC > 0) And (ReleaseDC(h_Wnd, h_DC) = 0)) Then
Begin
MessageBox(0, '释放设备描述表失败!', '错误', MB_OK Or
MB_ICONERROR);
h_DC := 0;
End;
//是否存在窗口句柄,调用 DestroyWindow( hWnd )来尝试销毁窗口
If ((h_Wnd <> 0) And (Not DestroyWindow(h_Wnd))) Then
Begin
MessageBox(0, '无法销毁窗体!', '错误', MB_OK Or
MB_ICONERROR);
h_Wnd := 0;
End;
// 注销窗口类
//这允许我们正常销毁窗口,接着在打开其他窗口时,
//不会收到诸如"Windows Class already registered"(窗口类已
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
网友评论:(评论内容只代表网友观点,与本站立场无关!) |
阅读排行
|