15,978
社区成员
发帖
与我相关
我的任务
分享
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
if( DrawXiangPi ){ // 如果要画橡皮就开始,否则啥都不做(这个BOOL变量当然是菜单或者命令更改)
ptStart = ptCur = point; // 记录开始点
bStartDraw = TRUE;// 开始画
SetCapture(); // 捕捉鼠标
}
CScrollView::OnLButtonDown(nFlags, point);
}
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
if( bStartDraw ){ // 如果开始了
// 直接画在客户区
CClientDC dc(this);
int nROP = dc.SetROP2(R2_NOTXORPEN);
dc.MoveTo( ptStart );
dc.LineTo( ptCur ); // 画旧的,等于刷除上一条
ptCur = point; // remark
dc.MoveTo( ptStart );
dc.LineTo( ptCur ); // 画新的。
dc.SetROP2( nROP );
}
CScrollView::OnMouseMove(nFlags, point);
}
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
if( bStartDraw ){
CClientDC dc( this );
int nROP = dc.SetROP2(R2_NOTXORPEN);
dc.MoveTo( ptStart );
dc.LineTo( ptCur ); // 画旧的,等于刷除上一条
dc.SetROP2(nROP);
bStartDraw = FALSE; // 画完
::ReleaseCapture(); // 释放鼠标
ptEnd = point;
// 现在,你已经得到两个点了:起始点和最终点来画一条直线了。
// 可以调用你那堆东西:memdc.MoveTo(ptStart);memdc.LineTo(ptEnd);
dosomethink(here); // 可以把你上面那堆搞成个函数: dosomethink( CPoint ptStart, CPoint ptEnd );
// Invalidate(); // 刷新or not..看你的代码而定了.
}
CScrollView::OnLButtonUp(nFlags, point);
}