如何删除MFC中的行

时间:2014-11-23 10:39:07

标签: c++ mfc gdi

我正在写一个像Paint这样的MFC应用程序。 我分两步绘制一条线(通过按住并移动鼠标):

第1步:处理WM_LBUTTONDOWN并获取startPoint。

步骤2:处理WM_MOUSEMOVE(使用MK_LBUTTON)获取endPoint,并使用LineTo()函数从startPoint到endPoint绘制一条线。

但是在第2步中,它会在接收WM_MOUSEMOVE时绘制一条线,因此会创建太多线条。我想删除旧行并在此步骤中绘制新行。 (接收WM_LBUTTONUP时只绘制一行)。 你能帮我吗。谢谢大家。对不起,如果我的英语太糟糕了。

2 个答案:

答案 0 :(得分:1)

在WM_LBUTTONDOWN中,将新成员变量m_pMouseObject设置为NULL。

在WM_MOUSEMOVE中,如果m_pMouseObject == NULL,则将m_pMouseObject设置为新创建的线对象,否则在鼠标移动时继续修改m_pMouseObject。

在WM_LBUTTONUP中

,从m_pMouseObject创建你的权威行对象并设置m_pMouseObject = NULL。

答案 1 :(得分:0)

在WM_MOUSEMOVE中设置endPoint变量但不绘制。而是调用Invalidate。这将导致擦除和重绘。因此,在OnPaint / OnDraw中绘制一条从startPoint到endPoint的行。