如果我用di.hdcDraw结果画线位置都对,可是输出文字总是向左偏移了一定位置后来我直接用
HDC hdc = ::GetDC(m_hWnd);位置都对,可是在控件缩放多次后会出现
AtlHiMetricToPixel函数中
ATLASSERT(hDCScreen != NULL);
断言失败请问我该怎么办?

解决方案 »

  1.   

    ATL_DRAWINFO参数里面就带DC.
    千万不要用::GetDC(m_hWnd);因为ActiveX有很多时候是不创建自己的窗口的(m_bWindowOnly默认为FALSE)。通常会由父窗口调用它的重画函数以及消息处理函数实现显示以及消息处理。
      

  2.   

    我现在m_bWindowOnly已经设置为TRUE我开始也是用di.hdcDraw可是文字输出它不准啊
      

  3.   

    原来不是DC的问题 // 画笔设置
    LOGPEN lp;
    HPEN hp;
    HPEN pOldPen; lp.lopnColor = m_Color;
    lp.lopnStyle = m_LineType;
    lp.lopnWidth.x = m_Width;
    lp.lopnWidth.y = 0; hp = ::CreatePenIndirect(&lp);
    if(hp)
    {
    pOldPen = (HPEN)::SelectObject(hdc,hp);
    if (pOldPen)
    {
    ::MoveToEx(hdc,x1,y1,NULL);
    ::LineTo(hdc,x2,y2);

    ::SelectObject(hdc,pOldPen);
    }
    }

    罪魁祸首在这里:(
      

  4.   

    我试了试,没什么问题。
    最好在最后的 ::SelectObject 后加个 ::DeleteObject(hp)。