如何围绕当前光标在MFC中的位置绘制一个矩形

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何围绕当前光标在MFC中的位置绘制一个矩形相关的知识,希望对你有一定的参考价值。

我试图围绕当前光标在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);
}

我的源代码有问题吗?请帮我。

答案

你需要用CView1::OnPaint方法进行绘画。

此外,您可以使用CDC::SetROP2方法使用R2_NOTXORPEN而不是使整个窗口无效,this link有一个例子。

以上是关于如何围绕当前光标在MFC中的位置绘制一个矩形的主要内容,如果未能解决你的问题,请参考以下文章

MFC GUI自定义控件:如何绘制光标更新以响应鼠标移动?

MFC绘制矩形

在 MFC Dialog-Based 中绘制简单的矩形

在实时人脸检测 Android 中的 Live CameraPreview 上围绕人脸绘制矩形

MFC编程ellipse()怎么画圆

编辑文本 - 如何更改光标位置?