BOOL CGDisplay::InitDDraw(void) { DWORD dwFlags; //创建对象 m_ddrval = DirectDrawCreate(NULL,&m_lpDD,NULL); if(m_ddrval!= DD_OK) return FALSE; m_lpDD->Compact(); if(m_bFullScreen) { //设置协作级别为全屏模式 dwFlags = DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT|DDSCL_ALLOWMODEX; m_ddrval =m_lpDD->SetCooperativeLevel(m_hWnd, dwFlags); if(m_ddrval!= DD_OK) return FALSE; //设置显示模式 m_ddrval =m_lpDD->SetDisplayMode( m_Width, m_Height, m_ColorCount); ShowWindow(m_hWnd,SW_MAXIMIZE); if(m_ddrval!= DD_OK) return FALSE; // 创建主页面 ZeroMemory( &m_SurfaceDesc, sizeof( m_SurfaceDesc ) ); m_SurfaceDesc.dwSize = sizeof(m_SurfaceDesc); m_SurfaceDesc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT; m_SurfaceDesc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX|DDSCAPS_SYSTEMMEMORY; m_SurfaceDesc.dwBackBufferCount = 1; m_ddrval = m_lpDD->CreateSurface( &m_SurfaceDesc, &m_lpDDPrimary, NULL ); if( m_ddrval != DD_OK )return FALSE; // 创建后台页面 m_lpDDSBack=CreateSurface(); if(m_lpDDSBack==NULL)return FALSE; m_SurfaceDesc.ddsCaps.dwCaps=DDSCAPS_BACKBUFFER; m_ddrval =m_lpDDPrimary->GetAttachedSurface(&m_SurfaceDesc.ddsCaps,&(m_lpDDSBack->m_Surface)); if( m_ddrval != DD_OK )return FALSE; } else { dwFlags = DDSCL_NORMAL; m_ddrval = m_lpDD->SetCooperativeLevel(m_hWnd, dwFlags); int nScreenX=::GetSystemMetrics(SM_CXSCREEN); int nScreenY=::GetSystemMetrics(SM_CYSCREEN); m_ddrval =m_lpDD->SetDisplayMode( nScreenX, nScreenY, m_ColorCount); if(m_ddrval!= DD_OK) return FALSE; m_lpDDSBack=CreateSurface(); if(m_lpDDSBack==NULL)return FALSE; } ClearScreen(); return TRUE; } 这是初始化函数,你可以看出,在窗口模式中并没有创建主页面. void CGDisplay::Update() { if(!m_bActive)return; if(m_bFullScreen) { while (TRUE) { m_lpDDPrimary->Flip(NULL,NULL); if(m_ddrval == DD_OK)break; if( m_ddrval == DDERR_SURFACELOST )break; if( m_ddrval != DDERR_WASSTILLDRAWING )break; } } else { HDC hdc=GetDC(m_hWnd); m_lpDDSBack->m_Surface->GetDC(&m_hDC); GetClientRect(m_hWnd,&m_DrawRect); BitBlt(hdc,m_DrawRect.left,m_DrawRect.top,m_DrawRect.right-m_DrawRect.left,m_DrawRect.bottom-m_DrawRect.top ,m_hDC,0,0,SRCCOPY); m_lpDDSBack->m_Surface->ReleaseDC(m_hDC); DeleteDC(hdc); } } 这是更新主页面的函数其中的一个,其它的都是一样的.