首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

求一voerlay实例,可以改变内容的解决方案

2012-05-05 
求一voerlay实例,可以改变内容的看了蚊子实例,但是我尝试去改变那蚊子的动作,创建一个位图,然后把BUF内容

求一voerlay实例,可以改变内容的
看了蚊子实例,但是我尝试去改变那蚊子的动作,创建一个位图,然后把BUF内容填进去,可是总是屏幕上是空的,什么也没有?
求指点。。。

static BOOL
LoadCameradataOntoSurface(LPDIRECTDRAWSURFACE lpdds,PBYTE cameradata)
{

HRESULT ddrval;
DDSURFACEDESC ddsd;
HDC hdcSurf = NULL;

if (!lpdds) return FALSE;

//
// get surface size and format.
//
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_HEIGHT | DDSD_WIDTH;
ddrval = lpdds->GetSurfaceDesc(&ddsd);
if (FAILED(ddrval))
goto Exit;

ddrval = lpdds->GetDC(&hdcSurf);
if (FAILED(ddrval))
goto Exit;

HDC hdcMem;
//HDC hdc = GetDC(m_hWnd);
hdcMem = CreateCompatibleDC(NULL);
HBITMAP hBit=CreateDIBSection(hdcMem,&bmi,DIB_RGB_COLORS,(void **)&cameradata,0,0);
SelectObject(hdcMem,hBit);

//if (BitBlt(hdcSurf, 0, 0, WIDETH_PIXEL_UNIT, HEIGHT_PIXEL_UNIT, hdcMem, 0, 0, SRCCOPY) == FALSE)
// goto Exit;
StretchBlt(hdcSurf,0,0,WIDETH_PIXEL_UNIT,HEIGHT_PIXEL_UNIT,hdcMem,0,0,ddsd.dwWidth,ddsd.dwHeight,SRCCOPY);
RETAILMSG(1,(TEXT("BBBBBB%d\r\n"),GetTickCount()));
Exit:
if (hdcSurf)
lpdds->ReleaseDC(hdcSurf);
if (hdcMem)
DeleteDC(hdcMem);
//g_pDDSOverlay->UpdateOverlay(NULL, g_pDDSPrimary, NULL, DDOVER_SHOW, NULL);

}

[解决办法]
overlay没这么简单的,先得创建ddraw对象,再创建overlay表面和主表面,再把表面贴到主表面,最后再往这个表面填充数据。

热点排行