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

delphi中怎么实现C中的OnEraseBkgnd

2012-02-23 
delphi中如何实现C中的OnEraseBkgnd在用delphi写采集卡的显示程序,原采集卡例程是用c写的,我对c不熟悉,而

delphi中如何实现C中的OnEraseBkgnd
在用delphi写采集卡的显示程序,原采集卡例程是用c写的,我对c不熟悉,而且对图像处理也不熟悉,很多看不明白,
例程中显示图像我认为主要是在这两个事件中完成的,高手帮忙指点下

BOOL COsdDlg::OnEraseBkgnd(CDC* pDC) 
{
//*
CreateCacheBmp(pDC);
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap *pOldBmp = dcMem.SelectObject(&m_bmpCache);
CRect rc;
GetClientRect(rc);
dcMem.FillSolidRect(rc,COLOR_OVERLAY);
PaintIfNoVideo(&dcMem);
PaintOsd(&dcMem);
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(pOldBmp);
return TRUE;
//*/
return CDialog::OnEraseBkgnd(pDC);
}

void COsdDlg::CreateCacheBmp(CDC *pDC)
{
ASSERT(IsWindow(m_hWnd));

CRect rc;
GetClientRect(rc);
if(m_bmpCache.GetSafeHandle() == NULL)
m_bmpCache.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
else
{
BITMAP bmp;
m_bmpCache.GetBitmap(&bmp);
if(bmp.bmWidth != rc.Width() || bmp.bmHeight != rc.Height())
{
m_bmpCache.DeleteObject();
m_bmpCache.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
}
}
}

[解决办法]

Delphi(Pascal) code
procedure WMERASEBKGND(var Msg: TWMERASEBKGND); message WM_ERASEBKGND;beginend;
[解决办法]
明明是c++,根c一点儿关系都没有

[解决办法]
这些都是API啊……直接这么调用不行吗?

热点排行