这个问题我搞不懂 ,高手请进 ! 100分送上
arfu 2000-03-30 09:27:00 各位大侠:
请高手看下面的代码,在窗口中显示一矩形,当按下鼠标左键,
判断鼠标箭头是否在矩形中。(在其中就改变颜色)
我在cRFView类中定义了 CRect mr;(矩形) 和 int mc;(颜色)
void CRfView::OnDraw(CDC* pDC)
{
CRfDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->SelectStockObject(mc);
pDC->Rectangle(mr);
}
void CRfView::OnLButtonDown(UINT nFlags, CPoint point)
{
CRect r=mr;
CClientDC dc(this);
OnPrepareDC(&dc);
dc.LPtoDP(r);
if(r.PtInRect(point))
{
if(mc==GRAY_BRUSH)
{
mc=WHITE_BRUSH;
}
else
{
mc=GRAY_BRUSH;
}
InvalidateRect(r);
}
CView::OnLButtonDown(nFlags, point);
}
void CRfView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
pDC->SetMapMode(MM_LOMETRIC);
CView::OnPrepareDC(pDC, pInfo);
}
请问:1. 我已了重载OnPrepareDC()函数, OnPrepareDC()函数不是在OnDraw()函数之前就被调用了吗!
为什么还要在OnLButtonDown()函数中重新调用呢?
(我删去OnLButtonDown()中的OnPrepareDC()后,程序失效)
2. 请大侠帮我分析一下该程序的运行顺序。 (我知道这是一个简单程序,但我是个初学者,请帮我)
衷心的感谢帮助我的高手