在 MFC(Microsoft Foundation Classes)中,CFrameWndEx::OnNcMouseMove 方法是用于处理非客户区(non-client area)鼠标移动事件的一个成员函数。非客户区通常包括窗口的标题栏、边框等部分。

以下是一个简单的示例代码,演示如何在 OnNcMouseMove 中处理非客户区的鼠标移动事件:
void CMyFrameWndEx::OnNcMouseMove(UINT nHitTest, CPoint point)
{
    // 调用基类实现
    CFrameWndEx::OnNcMouseMove(nHitTest, point);

    // 在这里添加您的处理逻辑
    HandleNcMouseMove(nHitTest, point);
}

void CMyFrameWndEx::HandleNcMouseMove(UINT nHitTest, CPoint point)
{
    // 在这里可以处理非客户区鼠标移动的逻辑
    // 根据 nHitTest 判断鼠标位于窗口的哪个区域

    if (nHitTest == HTCAPTION)
    {
        // 在标题栏上移动,可以添加相应的处理逻辑
        CString strMessage;
        strMessage.Format(_T("Mouse moved over the caption at (%d, %d)"), point.x, point.y);
        AfxMessageBox(strMessage);
    }
    else if (nHitTest == HTBORDER)
    {
        // 在边框上移动,可以添加相应的处理逻辑
    }
    // 其他命中测试值的处理...

    // 在这里可以执行其他鼠标移动的处理逻辑
}

在上述示例中,OnNcMouseMove 方法被重写,可以在这里添加自定义的非客户区鼠标移动事件的逻辑。nHitTest 参数指示鼠标在窗口的哪个区域,可以根据这个值来判断需要执行的操作。在 HandleNcMouseMove 方法中,根据具体的 nHitTest 值,可以执行不同的处理逻辑,例如在标题栏上显示消息框,或者在边框上进行其他处理。

请注意,实际的处理逻辑会根据您的应用程序的需求而有所不同。这个方法通常用于自定义非客户区的交互和外观。


转载请注明出处:http://www.pingtaimeng.com/article/detail/17995/MFC/CFrameWndEx