您的位置:首页 > 其它

DirectDraw创建窗口程序的注意事项

2015-01-23 14:11 113 查看
对于DirectDraw的大多数教程都是使用全屏独占模式的,但是有时候调试的时候,或者其他情况就感觉很不好用。 所以就使用DirectDraw创建一个窗口程序,非全屏模式。
先说下注意事项:
1. 创建窗口模式的时候,设置协作模式的时候窗口的类别要用 DDSCL_NORMAL ,不能跟DDSCL_EXCLUSIVE一起使用。
2.然后就是不能设置显示模式。 为什么不能设置,我也不知道。 我就是这一步卡了很久。 以为改了设置协作模式,就可以了。
3.就是DirectDraw规定使用窗口模式的时候不能使用后备缓冲。 就是不能创建一个后备缓冲的页面。,主页面创建的时候不能有。 BackBuffer ,Flip,Complex一系列的标志。
然后就是代码了:
if (FAILED(DirectDrawCreateEx(NULL,(void **)&lpDD,IID_IDirectDraw7,NULL))) //创建DirectDraw接口
{
return 0;
}
if (FAILED(lpDD->SetCooperativeLevel(window_handle,DDSCL_NORMAL))) //设置协作模式,
{
return 0;
}
DDRAW_INIT_STRUCT(ddsd); //初始化设备页面描述表
ddsd.dwFlags=DDSD_CAPS;
ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
if (FAILED(lpDD->CreateSurface(&ddsd,&lpDDPrimary,NULL))) //创建主页面。
{
return 0;
}
DDRAW_INIT_STRUCT(ddsd);
ddsd.dwFlags=DDSD_WIDTH | DDSD_HEIGHT;
ddsd.dwWidth=SCREEN_WIDTH;
ddsd.dwHeight=SCREEN_HEIGHT;
if (FAILED(lpDD->CreateSurface(&ddsd,&lpDDBuffer,NULL))) //创建第二个页面,不是后备缓冲,是离屏页面。
{
return 0;
}
使用DirectDraw创建一个窗口模式就是这样了,记住不能设置显示模式,不能用后备缓冲。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: