小弟新建了一个基于对话框的MFC程序
原来的坐标轴原点在对话框的左上角,x正向朝右,y正向朝下
我现在想把这个坐标系下的点的坐标值  变换成自己的坐标系(原点在对话框上的一个位置,然后x轴正向右,y轴正向上)下的值,怎么弄呢?用ScreenToClient好像不可以...
LPPOINT P=new POINT();
P->x=point.x;
P->y=point.y;
::ScreenToClient(m_hWnd,P);
我是这样用的,得到的坐标不对,而且会随着对话框的移动而改变

解决方案 »

  1.   

    要用到:
    void CRygWnd::SetMapping(CDC* pDC)
    {
    CRect clientRect;
    GetClientRect(clientRect);
    pDC->SetMapMode(MM_ISOTROPIC);
    pDC->SetWindowExt(1000, 2000);
    pDC->SetViewportExt(clientRect.right, -clientRect.bottom);
    pDC->SetViewportOrg(clientRect.right / 2, clientRect.bottom / 2);

    }
      

  2.   

    要用到:
    void CRygWnd::SetMapping(CDC* pDC)
    {
    CRect clientRect;
    GetClientRect(clientRect);
    pDC->SetMapMode(MM_ISOTROPIC);
    pDC->SetWindowExt(1000, 2000);
    pDC->SetViewportExt(clientRect.right, -clientRect.bottom);
    pDC->SetViewportOrg(clientRect.right / 2, clientRect.bottom / 2);

    }