请高手指教 vc 逻辑坐标 设备坐标 怎么改成一致的

来源:百度知道 编辑:UC知道 时间:2024/05/20 16:35:57
我想让逻辑坐标改在窗口的左下角,设备坐标也是(不然鼠标在画矩形框时,画的位置不是真实点击的点)这是我写的程序,不知哪有问题,请高手指教:
CClientDC dc(this);
CPen pen(PS_SOLID,4,RGB(255,0,0));
CPen* pOldPen=dc.SelectObject(&pen);
CRect rect;
GetClientRect(&rect); //得到客户区的尺寸
dc.SetMapMode(MM_ANISOTROPIC); //设置映射模式
dc.SetWindowExt(rect.Width(),rect.Height()); //设置窗口范围
dc.SetWindowOrg(0,rect.bottom); //窗口原点
dc.SetViewportOrg(0,rect.bottom); //视图原点
dc.SetViewportExt(rect.Width(),rect.Height()); //视图范围

void CttView::OnDraw(CDC* pDC)
{
CttDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

CClientDC& dc = *(CClientDC*)pDC;

CPen pen(PS_SOLID,4,RGB(255,0,0));
CPen* pOldPen=dc.SelectObject(&pen);
CRect rect;
GetClientRect(&rect); //得到客户区的尺寸
dc.SetMapMode(MM_ANISOTROPIC); //设置映射模式
dc.SetWindowExt(rect.Width(), -rect.Height()); //设置窗口范围
dc.SetViewportExt(rect.Width(), rect.Height()); //视图范围
dc.SetWindowOrg(0,rect.bottom); //窗口原点
dc.SetViewportOrg(0,0); //视图原点

pDC->MoveTo(10,10);
pDC->LineTo(20,10);
pDC->MoveTo(10,10);
pDC->LineTo(rect.Width()-10,rect.Height()-10);

// TODO: add draw code for native data here
}