我想在显示的图片中用鼠标拖动一块,然后进行剪切。可是怎样才能使拖动时出现虚框呢,就象橡皮筋那种的。周五有热心的大侠说用DrawFocusRect函数。
我写的程序是这样的:void CVCCutImageDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_iEndX=point.x;
m_iEndY=point.y; if (m_LButFlag==1)
{
lRect.left=m_iStartX;
lRect.top=m_iStartY;
lRect.right=m_iEndX;
lRect.bottom=m_iEndY; CClientDC dc(this);
dc.DrawFocusRect(&lRect); // Draw the Broken line frame
} CDialog::OnMouseMove(nFlags, point);
}这样的结果是在鼠标按下并拖动时,显示出许多虚框,我知道应该再次使用这个函数擦除以前的虚框,可是在MouseMove中再次调用DrawFocusRect时就会什么反映都没有了,不再绘制虚框,哪个热心的人能指点迷津,告诉小女子该怎么改这个东东阿?拜谢了!
我写的程序是这样的:void CVCCutImageDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_iEndX=point.x;
m_iEndY=point.y; if (m_LButFlag==1)
{
lRect.left=m_iStartX;
lRect.top=m_iStartY;
lRect.right=m_iEndX;
lRect.bottom=m_iEndY; CClientDC dc(this);
dc.DrawFocusRect(&lRect); // Draw the Broken line frame
} CDialog::OnMouseMove(nFlags, point);
}这样的结果是在鼠标按下并拖动时,显示出许多虚框,我知道应该再次使用这个函数擦除以前的虚框,可是在MouseMove中再次调用DrawFocusRect时就会什么反映都没有了,不再绘制虚框,哪个热心的人能指点迷津,告诉小女子该怎么改这个东东阿?拜谢了!
{
lRect.left=m_iStartX;
lRect.top=m_iStartY;
lRect.right=m_iEndX;
lRect.bottom=m_iEndY; Invalidate();//加入重绘 } CDialog::OnMouseMove(nFlags, point);个人认为:下面二句放入到OnPaint()中比较好。
CClientDC dc(this);
dc.DrawFocusRect(&lRect); // Draw the Broken line frame
{
// TODO: Add your message handler code here and/or call default
m_iEndX=point.x;
m_iEndY=point.y; if (m_LButFlag==1)
{
lRect.left=m_iStartX;
lRect.top=m_iStartY;
lRect.right=m_oldx;
lRect.bottom=m_oldy; CClientDC dc(this);
dc.DrawFocusRect(&lRect); //以上代码实现对上一次框框的删除 m_oldx = point.x; //定义为CVCCutImageDlg的成员变量,用来保存上一次的x坐标
m_oldy = point.y; //定义为CVCCutImageDlg的成员变量,用来保存上一次的y坐标
lRect.left=m_iStartX;
lRect.top=m_iStartY;
lRect.right=m_iEndX;
lRect.bottom=m_iEndY; dc.DrawFocusRect(&lRect); // Draw the Broken line frame
} CDialog::OnMouseMove(nFlags, point);
}