我是不是很笨啊?连画条直线都不行~:RECT rectClient;
GetClientRect(&rectClient);
int iX = rectClient.left;
int iY = rectClient.top;
int jX = rectClient.right;
int jY = rectClient.bottom ;
CDC *cdc;
cdc = GetDC();
MoveToEx(*cdc,iX,iY,NULL);
LineTo(*cdc,jX,jY);哪里有问题~?

解决方案 »

  1.   

    CRect rc;
    GetClientRect(&rc);
    CClientDC dc(this);
    dc.MoveTo(rc.TopLeft());
    dc.LineTo(rc.BottomRight());
      

  2.   

    MoveToEx(cdc->m_hDC,iX,iY,NULL);
    LineTo(cdc->m_hDC,jX,jY);
      

  3.   

    RECT rectClient;
    GetClientRect(&rectClient);
    int iX = rectClient.left;
    int iY = rectClient.top;
    int jX = rectClient.right;
    int jY = rectClient.bottom ;
    CDC *cdc;
    cdc = GetDC();
    cdc->MoveTo(iX,iY);
    cdc->LineTo(jX,jY);api 的 MoveToEx()第一个参数是HDC,不是cdc
      

  4.   

    如果上面的代码不在OnPaint(OnDraw)中,有可能被刷新时重绘掉
      

  5.   

    我是不是自虐阿?怕怕~呵呵,问题找到了我看错了,把代码加到了
    void CDrawTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    里面继续打我,不过没分了~嘿嘿
      

  6.   

    你这代码可能在sdk中的吧,like this:
    RECT rectClient;
    GetClientRect(hWnd,&rectClient);//hWnd is a valide window's handle
    int iX = rectClient.left;
    int iY = rectClient.top;
    int jX = rectClient.right;
    int jY = rectClient.bottom ;
    HDC hdc;     //if you write sdk code, don't bore mfc class CDC
    hdc = GetDC();
    MoveToEx(hdc,iX,iY,NULL);
    LineTo(hdc,jX,jY);
    ReleaseDC(hdc); //don't forget to release resourceif code from mfc app, like this
    void CXXXXXWnd::OnPaint()
    {
    CPaintDC dc(this);
    CRect rc;
    GetClientRect(&rc);
    dc.MoveTo(rc.TopLeft());
    dc.LineTo(rc.BottomRight());
    }