我正在尝试围绕当前光标在MFC中的位置绘制一个矩形。它在我移动鼠标时起作用,但当我停止移动鼠标时矩形消失了。
void CView1::OnMouseMove(UINT nFlags, CPoint point)
{
if (!m_mouse_tracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_HOVER;
tme.hwndTrack = this->m_hWnd;
tme.dwHoverTime = HOVER_DEFAULT;
if (::_TrackMouseEvent(&tme))
{
m_mouse_tracking = true;
// Draw the 1st rect
draw_rect_(m_pDC);
}
}
else
{
// Draw new rect and erase old rect
RedrawWindow(NULL, NULL, RDW_INVALIDATE);
draw_rect_(m_pDC);
}
}
void CView1::OnMouseHover(UINT nFlags, CPoint point)
{
m_mouse_tracking = false;
draw_rect_(m_pDC);
}
我的源代码有问题吗?请帮我。
答案 0 :(得分:2)
您需要使用CView1::OnPaint方法进行绘画。
此外,您可以使用R2_NOTXORPEN
方法而不是使整个窗口无效,CDC::SetROP2就是一个例子。