本帖最后由 zhuyuge0 于 2012-12-27 15:56:18 编辑

解决方案 »

  1.   

    潜入到ie里时,要分清是在ocx中操作的还是在ie里
      

  2.   

    这个不用重绘的,clistctrl本身就有选中的功能,我只要不把对话框切入到网页,一切运行就全都ok。,只是在ie里面出现了这个问题
      

  3.   

    这个还用得着说,ocx中我用c++写,ie中我得用html或者javascript,这个有点扯远啦,不过还是多谢回帖帮忙
      

  4.   

    重载CXXXCtrl的OnSetObjectRects方法.void MyGetClippingCoordinates(LPCRECT pPosRect, LPCRECT pClipRect,
      LPRECT pIntersectRect, LPPOINT pOffsetPoint)
    {
    int clipLeft = 0;
    int clipTop = 0; if ((pClipRect == NULL) || IsRectEmpty(pClipRect))
    {
    CopyRect(pIntersectRect, pPosRect);
    }
    else
    {
    IntersectRect(pIntersectRect, pPosRect, pClipRect);
    clipLeft = pClipRect->left;
    clipTop = pClipRect->top;
    } pOffsetPoint->x = 0;
    pOffsetPoint->y = 0;
    }BOOL CwebvideoCtrl::OnSetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect)
    {
    ASSERT(lprcPosRect != NULL); // Remember the position rectangle for later
    m_rcPos = *lprcPosRect; // Calculate complete rectangle including the tracker (if present)
    CRect rectPos = m_rcPos;
    if (m_bUIActive && m_pRectTracker != NULL)
    {
    // Save new clipping rectangle (for DestroyTracker)
    if (lprcClipRect != NULL)
    m_pRectTracker->m_rectClip = *lprcClipRect; // Adjust tracker rectangle to new dimensions
    CRect rectTmp = rectPos;
    rectTmp.OffsetRect(-rectTmp.left, -rectTmp.top);
    m_pRectTracker->m_rect = rectTmp; // Adjust the "true" rectangle to include handles/hatching
    UINT nHandleSize = m_pRectTracker->m_nHandleSize - 1;
    rectPos.InflateRect(nHandleSize, nHandleSize);
    } // Now clip that rectangle as appropriate
    CRect rectClip; // CHANGE - call your own copy of _GetClippingCoordinates
    MyGetClippingCoordinates(rectPos, lprcClipRect, rectClip, &m_ptOffset); // Move outer window first. then inner window if (!m_bInPlaceSiteWndless)
    {
    CWnd* pWndOuter = GetOuterWindow(); //BEGIN CHANGE
    if (pWndOuter != NULL)
    { // ::MoveWindow(pWndOuter->m_hWnd, rectClip.left, rectClip.top,
    // rectClip.Width(), rectClip.Height(), TRUE);
    ::MoveWindow(pWndOuter->m_hWnd, rectPos.left, rectPos.top,
    rectPos.Width(), rectPos.Height(), TRUE);
    }
    //END CHANGE
    if (pWndOuter != this)
    MoveWindow(m_ptOffset.x, m_ptOffset.y, rectPos.Width(), rectPos.Height());
    } return TRUE;

      

  5.   

    我看了下自己的ocx,直接把OnDraw都注释掉了,没有重载这个函数,一切正常.