全屏幕OpenGL程序 其实在BCB中实现全屏幕OpenGL的原理是很简单的，只要在窗口OpenGL程序的基础上做一个小小的改动即可：只要将窗口属性修改为WS_POPUP就可以了。 具体如下： 在窗口类的CreateParam()成员函数中加入如下语句： Params.Style=WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS; 将相应窗口修改成WS_POPUP型窗口，另两个是为支持OpenGL为设的。 仍在窗口类的CreateParam()成员函数，加入如下语句： ChangeResolution(800,600); Params.Width=800; Params.Height=600; Params.X=Params.Y=0; 第一句将屏幕分辨率设定为800X600（可以是显示卡支持的任意值） 然后修改窗体大小使之占满全屏。 ChangeResolution()是一个自编的小函数，其原理如下： 用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; } 样本程序 说明：通常这个程序运行时会看到屏幕底部有道白线，这是任务栏造成的，如果你将它的总在最前面(always on top)去掉或者将本程序窗口作成Always On Top型就不会再看到它了。