写一个绘图程序,程序运行后,当用户在客户区窗口按下鼠标左键并移动时,
根据鼠标移动动态的出现当前直线,但是当释放左键才会真正划出直线。
程序画的鼠标走过的轨迹,不符合要求啊
视图类CMyDrawView添加成员变量:
protected: // 定义有关鼠标作图的成员变量
CPoint m_ptOrigin; // 起始点坐标
bool m_bDragging; // 拖拽标记
HCURSOR m_hCross; // 光标句柄
在视图类CMyDrawView构造函数中设置拖拽标记和十字光标。
CMyDrawView::CMyDrawView()
{
// TODO: add construction code here
m_bDragging=false; // 初始化拖拽标记
// 获得十字光标句柄
m_hCross=AfxGetApp()->
LoadStandardCursor(IDC_CROSS);
}
void CMyDrawView::OnLButtonDown(
UINT nFlags, CPoint point)
{
// TODO: Add your message . . . . . .
SetCapture(); // 捕捉鼠标
::SetCursor(m_hCross); // 设置十字光标
m_ptOrigin=point;
m_bDragging=TRUE; // 设置拖拽标记
// CView::OnLButtonDown(nFlags, point);
}
void CMyDrawView::OnMouseMove(
UINT nFlags, CPoint point)
{
// TODO: Add your message . . . . . .
if(m_bDragging)
{
CClientDC dc(this); //客户区设备环境
dc.MoveTo(m_ptOrigin);
dc.LineTo(point); // 绘制线段
m_ptOrigin=point; // 新的起始点
}
// CView::OnMouseMove(nFlags, point);
}
ClassWizard类向导为视图类添加左键释放WM_LBUTTONUP的消息处理函数。
void CMyDrawView::OnLButtonUp(
UINT nFlags, CPoint point)
{
// TODO: Add your message . . . . . .
if(m_bDragging)
{
m_bDragging=false; // 清拖拽标记
ReleaseCapture(); // 释放鼠标,还原鼠标形状
} if(m_bDragging)
{
m_bDragging=false; // 清拖拽标记
ReleaseCapture(); // 释放鼠标,还原鼠标形状
}
CView::OnLButtonUp(nFlags, point);
}
以上程序画的鼠标走过的轨迹,不符合要求啊