DirectX: DirectDraw: Overlay页面不能设置Clipper?高手指教
创建主窗口(m_hWnd为主窗口名柄)后,
对主页面设置Clipper有效,主页面的显示被限定在主窗口内不会覆盖它上面的窗口;
对Overlay页面为何不起作用呢?调用UpdateOverlay显示出Overlay页面后,它上面的窗口会被覆盖!!!
下面附上创建Overlay页面及设置Clipper的代码,请高手指点。
// 页面格式
DDPIXELFORMAT PixelFormat= { sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0xF800, 0x07E0, 0x001F, 0 }; // RGB565
DDSURFACEDESC ddsd;
ddsd.dwSize=sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OVERLAY; // OVERLAY类型
ddsd.dwWidth = 352;
ddsd.dwHeight = 288;
ddsd.ddpfPixelFormat=PixelFormat;
if(m_lpDD->CreateSurface(&ddsd,&m_lpDDSOverlay,NULL)==DD_OK) { // 创建页面
LPDIRECTDRAWCLIPPER lpClipper;
if(m_lpDD->CreateClipper(0,&lpClipper,NULL)==DD_OK) { // 创建CLIPPER
if(lpClipper->SetHWnd(0, m_hWnd)==DD_OK) { // 主窗口关联到CLIPPER
if(m_lpDDSOverlay->SetClipper(lpClipper)==DD_OK) { // CLIPPER关联到Overlay页面
MessageBox(NULL,"Clipper Attached to Overlay surface OK !","DirectX",MB_OK);
}
}
lpClipper->Release();
}
}