背景擦除。。

dinght810 2004-11-02 10:30:05
在Doc类中添加CRectTracker m_recTk;
在View类中添加
bool m_btnPressed;
CPoint m_endP;
CPoint m_startP;
然后:
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_startP = point ;
m_btnPressed = true ;
CView::OnLButtonDown(nFlags, point);
}

void CTestView::OnMouseMove(UINT nFlags, CPoint point)
{

if(m_btnPressed)
{
CDC *pDC = GetDC() ;
CTestDoc *pDoc = GetDocument() ;
ASSERT_VALID(pDoc) ;
CRect rect ;
m_endP = point ;
rect.SetRect(m_startP,m_endP) ;
pDoc->m_recTk.DrawTrackerRect(&rect,AfxGetMainWnd(),pDC,AfxGetMainWnd()) ;
ReleaseDC(pDC) ;
}
CView::OnMouseMove(nFlags, point);
}

void CTestView::OnLButtonUp(UINT nFlags, CPoint point)
{
m_endP = point ;
m_btnPressed = false;
CView::OnLButtonUp(nFlags, point);
}

这是拖动虚线框的绘制方法。

现在唯一的问题是,当再拖动绘制过程,你将被绘制的文档最小化,然后最大化,再在上面拖动时,上次产生的虚框没有被擦除,DrawTrackerRect不是在绘图的时候自动擦除的吗??
麻烦给出解决的方法。
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinght810 2004-11-02
  • 打赏
  • 举报
回复
焦点应该怎么加,加在何处啊,我不怎么懂,刚学MFC.
zhucde 2004-11-02
  • 打赏
  • 举报
回复
以前我做这样的程序是当焦点失去又得回时刷新一次,

判断焦点用:

if(GetForegroundWindow()!=this)
asett1 2004-11-02
  • 打赏
  • 举报
回复
view视图只有收到OnPaint()消息的时候才会刷新啊,要理解本质哦

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧