快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

乐虎lehu08手机版:全屏幕OpenGL程序



其其实BCB中实现全屏幕OpenGL的道理是很简单的,只要在窗口OpenGL法度榜样的根基上做一个小小的篡改即可:只要将窗口属性改动为WS_POPUP就可以了。

详细如下:

在窗口类的CreateParam()成员函数中加入如下语句:

Params.Style=WS_POPUP|WS_CLIP乐虎lehu08手机版CHILDREN|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()改动显乐虎lehu08手机版示模式。

ChangeResolution()的完备代码:

BOOL ChangeResolution乐虎lehu08手机版(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 {

mode乐虎lehu08手机版Switch = ChangeDisplaySettings(&devMode, 0);

if (modeSwitch!=DISP_CHANGE_SUCCESSFUL)

{

//Might be runn乐虎lehu08手机版ing 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型就不会再看到它了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: