В настоящее время я изучаю MFC. Я хочу рисовать линии с помощью функций MoveTo () и LineTo () как в VC ++ 6.0, так и в VS2010, но кажется, что это не работает в vs2010. Я добавляю только два окнаобработчик сообщений WM_LBUTTONDOWN и WM_LBUTTONUP в проекте с одним документом.Вот код в VC ++ 6.0:
CPoint m_ptOrign;
void CStyleView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_ptOrign=point;
CView::OnLButtonDown(nFlags, point);
}
void CStyleView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
dc.MoveTo(m_ptOrign);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);
}
Вот код в vs2010:
CPoint m_ptOrign;
void CStyleView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_ptOrign=point;
CView::OnLButtonDown(nFlags, point);
}
void CStyleView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
dc.MoveTo(m_ptOrign);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);
}
Коды, которые я добавляю в два проекта, совпадают. Когда я выпускаюлевая кнопка, строка появляется сразу в проекте vc ++ 6.0, но не появляется в проекте vf 2010 mfc.Если размер или расположение окна проекта vs 2010 изменяется, строка появляется.Но когда я использую dc.Rectangle(CRect(m_ptOrign,point))
в проекте vs 2010, он работает хорошо.Я не знаю, почему .....
Более того, если я использую
CBrush *pBbrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBbrush);
dc.Rectangle(CRect(m_ptOrign,point))
в vs2010, он снова не будет работать, как в случае рисования линий