现已能使媒体文件独占屏幕,但其不能全屏播放,意思就是左上角是播放的媒体文件,其他地方是空白,请教各位老大如何让媒体文件全屏播放
程序代码如下:
IMultiMediaStream *pMMStream;
IDirectDraw *pDD;
IDirectDrawSurface *pPrimarySurface; 
DDSURFACEDESC ddsd;void canvasFrame::InitDH()//初始化directshow
{
   pDD=NULL; 
   pPrimarySurface=NULL; 
   pMMStream=NULL; 
//   ZeroMemmory(ddsd,sizeof(ddsd)); //HRESULT r; 
//初始化COM 
   CoInitialize(NULL); 
//初始化DirectDraw 
   InitDDraw();  
}HRESULT canvasFrame::LoadFromFile(const char * szFileName, IMultiMediaStream **ppMMStream, 
IDirectDraw *pDD) //从磁盘读取媒体文件

HRESULT r; 
IAMMultiMediaStream *pAMStream; if(FAILED(r=CoCreateInstance(CLSID_AMMultiMediaStream, NULL, 
CLSCTX_INPROC_SERVER, 
IID_IAMMultiMediaStream, (void **)&pAMStream))) 
return r; 
WCHAR wPath[MAX_PATH]; 
MultiByteToWideChar(CP_ACP, 0, szFileName, -1, wPath, 
sizeof(wPath)/sizeof(wPath[0])); if(FAILED(r=pAMStream->Initialize(STREAMTYPE_READ, AMMSF_NOGRAPHTHREAD, 
NULL))) 
return r; 
if(FAILED(r=pAMStream->AddMediaStream(pDD, &MSPID_PrimaryVideo, 0, NULL))) 
return r; 
if(FAILED(r=pAMStream->AddMediaStream(NULL, &MSPID_PrimaryAudio, 
AMMSF_ADDDEFAULTRENDERER, NULL))) 
return r; 
if(FAILED(r=pAMStream->OpenFile(wPath, 0))) 
return r; 
*ppMMStream = pAMStream; 
return S_OK; 
} void canvasFrame::Play(IDirectDrawSurface *pSurface, IMultiMediaStream *pMMStream)//播放媒体文件 

IMediaStream *pPrimaryVidStream; 
IDirectDrawMediaStream *pDDStream; 
IDirectDrawStreamSample *pSample; 
RECT rect; 
DDSURFACEDESC ddsd; pMMStream->GetMediaStream(MSPID_PrimaryVideo, &pPrimaryVidStream); 
pPrimaryVidStream->QueryInterface(IID_IDirectDrawMediaStream, (void **) 
&pDDStream); 
ddsd.dwSize = sizeof(ddsd); 
pDDStream->GetFormat(&ddsd, NULL, NULL, NULL); rect.top =100; 
rect.left =150; 
rect.bottom = ddsd.dwHeight+100; 
rect.right = ddsd.dwWidth+150; pDDStream->CreateSample(pSurface, &rect, 0, &pSample); 
pMMStream->SetState(STREAMSTATE_RUN); while (pSample->Update(0, NULL, NULL, NULL) == S_OK) 
; pMMStream->SetState(STREAMSTATE_STOP); 
pSample->Release(); 
pDDStream->Release(); 
pPrimaryVidStream->Release(); 
} HRESULT canvasFrame::InitDDraw()//初始化directdraw 

HRESULT r; 
if(FAILED(r=DirectDrawCreate(NULL, &pDD, NULL))) 
return r; 
//DD->SetCooperativeLevel(m_hWnd,DDSCL_EXCLUSIVE |DDSCL_FULLSCREEN|DDSCL_ALLOWREBOOT );
pDD->SetCooperativeLevel(m_hWnd,DDSCL_EXCLUSIVE |
         DDSCL_FULLSCREEN|DDSCL_ALLOWREBOOT );
if(FAILED(r=pDD->SetDisplayMode(640,480,256))) //分辨率设置 
return r; ddsd.dwSize = sizeof(ddsd); 
ddsd.dwFlags = DDSD_CAPS; 
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; 
if(FAILED(pDD->CreateSurface(&ddsd, &pPrimarySurface, NULL))) 
return r; 
return S_OK; } void canvasFrame::Uninit() 

if(pMMStream!=NULL) 
pMMStream->Release(); 
if(pPrimarySurface!=NULL) 
pPrimarySurface->Release(); 
if(pDD!=NULL) 
pDD->Release(); CoUninitialize(); 
}