我使用MFC创建了一个ActiveX项目。
创建了CRectTracker类。
然后我使用OnPaint函数绘制了一个类。 但是,屏幕未更新。
我使用OnDraw函数绘制。 但是,余像仍然存在。
你怎么解决?
本准则是......
CArray <CRectTracker, CRectTracker&> m_arrRect;
void CWebBrowserCtrl::AddArea()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CRect rect(0, 0, 100, 100);
CRectTracker tracker;
tracker.m_rect = rect;
tracker.m_nStyle = 0;
tracker.m_nStyle |= CRectTracker::dottedLine;
tracker.m_nStyle |= CRectTracker::resizeOutside;
m_arrRect.Add(tracker);
this->Invalidate();
}
void CWebBrowserCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& /* rcInvalid */)
{
if (!pdc)
return;
int length = m_arrRect.GetCount();
for (int i = 0; i < length; ++i) {
CRectTracker tracker = m_arrRect.GetAt(i);
if ((tracker.m_rect.Width() > 0) && (tracker.m_rect.Height() > 0))
{
tracker.Draw(pdc);
}
}
}
OR
void CThermalViewForWebBrowserCtrl::OnPaint()
{
CPaintDC dc(this);
int length = m_arrRect.GetCount();
for (int i = 0; i < length; ++i) {
CRectTracker tracker = m_arrRect.GetAt(i);
if ((tracker.m_rect.Width() > 0) && (tracker.m_rect.Height() > 0))
{
tracker.Draw(&dc);
}
}
COleControl::OnPaint(&dc);
}