不重绘Activex中的CRectTracker

时间:2017-11-06 01:28:20

标签: mfc activex

我使用MFC创建了一个ActiveX项目。

创建了CRectTracker类。

然后我使用OnPaint函数绘制了一个类。 但是,屏幕未更新。

我使用OnDraw函数绘制。 但是,余像仍然存在。

你怎么解决?

Problem Picture...

本准则是......

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);
}

0 个答案:

没有答案