龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

创建DirectX环境(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); DDSURFACEDESC ddsd; DDSCAPS ddscaps; HRESULT ddrval; HDC hdc; char buf[256]; ddrval=DirectDrawCreate(NULL,lpDD,NULL); if (ddrval==DD_OK) { ddrval=lpDD-S

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
DDSURFACEDESC ddsd;
DDSCAPS ddscaps;
HRESULT ddrval;
HDC hdc;
char buf[256];
ddrval=DirectDrawCreate(NULL,&lpDD,NULL);
if (ddrval==DD_OK)
{
ddrval=lpDD->SetCooperativeLevel (hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
if (ddrval==DD_OK)
{
ddrval=lpDD->SetDisplayMode (640,480,8);
if (ddrval==DD_OK)
{
ddsd.dwSize =sizeof(ddsd);
ddsd.dwFlags =DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps =DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount =1;
ddrval=lpDD->CreateSurface (&ddsd,&lpDDSPrimary,NULL);
if (ddrval==DD_OK)
{
ddscaps.dwCaps =DDSCAPS_BACKBUFFER;
ddrval=lpDDSPrimary->GetAttachedSurface (&ddscaps,&lpDDSBack);
if(ddrval==DD_OK)
{
return TRUE;
}
}
}
}
}
DestroyDirectDrawObjects();
DestroyWindow(hWnd);
return FALSE;
}

c)添加头文件
#include

d)在project|setting|link添加ddraw.lib

e)添加函数声明及函数体

static void DestroyDirectDrawObjects(void);
static void DestroyDirectDrawObjects(void)
{
if(lpDD!=NULL)
{
lpDD->RestoreDisplayMode ();
if(lpDDSPrimary!=NULL)

{
lpDDSPrimary->Release ();
lpDDSPrimary=NULL;
}
lpDD->Release ();
lpDD=NULL;
}
}

六、添加

case WM_KEYDOWN:
switch(wParam)
{

case VK_ESCAPE:
case VK_F12:
DestroyDirectDrawObjects();
PostMessage(hWnd,WM_CLOSE,0,0);
break;
}
break;

精彩图集

赞助商链接