我正在写一个像Paint这样的MFC应用程序。 我分两步绘制一条线(通过按住并移动鼠标):
第1步:处理WM_LBUTTONDOWN并获取startPoint。
步骤2:处理WM_MOUSEMOVE(使用MK_LBUTTON)获取endPoint,并使用LineTo()函数从startPoint到endPoint绘制一条线。
但是在第2步中,它会在接收WM_MOUSEMOVE时绘制一条线,因此会创建太多线条。我想删除旧行并在此步骤中绘制新行。 (接收WM_LBUTTONUP时只绘制一行)。 你能帮我吗。谢谢大家。对不起,如果我的英语太糟糕了。
答案 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的行。