shawind 发表于 2007-3-13 22:04:51

你把glut退出事件给拦下来,重写一个好了。
具体的函数应该就是在glut中的。
ActionOnWindowClose   
The behaviour when the user closes a window.

Exit    Exit the whole program when any window is closed or leaveMainLoop is called (default).
MainLoopReturns       Return from mainLoop when any window is closed.
ContinueExectuion    Return from mainLoop after the last window is closed.

查错了,这个ActionOnWindowClose不是c语言的glut中的。

好人卡的 发表于 2007-3-13 22:15:16

shawind 发表于 2007-3-13 22:52:53

不用重写的,理论只要捕获按下x后产生的事件就可以。
但是我翻一下http://www.opengl.org/documentation/specs/glut/spec3/spec3.html
上的doc没有找到,相应的消息循环.....
不知道glut中event处理到底是怎么回事。

但如果你是用SDL来写的那就太简单了。

SDL_Event event;
while (SDL_PollEvent(&event)){
    if (event.type == SDL_QUIT)
             .....
   }

好人卡的 发表于 2007-3-13 23:30:02

Saiholmes 发表于 2007-3-14 10:12:25

什么是SDL?
即 Simple DirectMedia Layer,使用 LGPL 许可证。

免费的跨平台多媒体应用编程接口
用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等
它能做什么?
视频、音频、事件、CDROM支持、线程、计时器、各种图象文件格式读取、快速绘图、混音、游戏杆支持、网络、MPEG解码等等,且CPU字节顺序无关。

好人卡的 发表于 2007-3-14 11:40:10

shawind 发表于 2007-3-14 14:34:01

在SDL中的作法是
先要一个头文件

#include "windows.h"


....
SDL_Event event;
while (SDL_PollEvent(&event)){
  if (event.type == SDL_QUIT)
   MessageBox(NULL,"直接退出游戏可能会导致游戏数据丢失!确认你已存档后,再点确定按钮退出。","警告",MB_OKCANEL);
   break;
....
}

这样在你点了x后,会出现一个弹出窗口来提醒用户。
你也可以把MessageBox换成你游戏内部的UI事件,效果会更好。

你也可以不用SDL
nehe的opengl教学,在第一课就已经作好了这个框架了。(就是vc源码的那个)
可以在这个基础上接着写opengl程序,而不再需要什么window编程方面的东西。

好人卡的 发表于 2007-3-14 15:26:38

页: 1 [2]
查看完整版本: [求助]有没有办法屏蔽掉OpenGL做出的窗口上面的那个叉?